From 123ba874ed61b25fe469c641b1428503abf00396 Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Tue, 26 Sep 2023 21:25:21 +0000 Subject: [PATCH] build based on 71cd2aa --- stable | 2 +- v0.8 | 2 +- v0.8.79/.documenter-siteinfo.json | 1 + v0.8.79/assets/android-chrome-192x192.png | Bin 0 -> 34295 bytes v0.8.79/assets/android-chrome-512x512.png | Bin 0 -> 117356 bytes v0.8.79/assets/apple-touch-icon.png | Bin 0 -> 31371 bytes v0.8.79/assets/citations.css | 19 + v0.8.79/assets/documenter.js | 874 +++++ v0.8.79/assets/favicon-16x16.png | Bin 0 -> 1358 bytes v0.8.79/assets/favicon-32x32.png | Bin 0 -> 2546 bytes v0.8.79/assets/favicon.ico | Bin 0 -> 15086 bytes v0.8.79/assets/images/SPDSignal.png | Bin 0 -> 47449 bytes .../assets/images/projection_illustration.png | Bin 0 -> 275409 bytes .../images/projection_illustration_600.png | Bin 0 -> 55608 bytes .../assets/images/retraction_illustration.png | Bin 0 -> 263807 bytes .../images/retraction_illustration_600.png | Bin 0 -> 48906 bytes v0.8.79/assets/logo-dark.png | Bin 0 -> 190083 bytes v0.8.79/assets/logo-dark_bg.png | Bin 0 -> 190719 bytes v0.8.79/assets/logo-text-readme-dark.png | Bin 0 -> 31616 bytes v0.8.79/assets/logo-text-readme.png | Bin 0 -> 34222 bytes v0.8.79/assets/logo.png | Bin 0 -> 187366 bytes v0.8.79/assets/logo_bg.png | Bin 0 -> 186688 bytes v0.8.79/assets/mstile-150x150.png | Bin 0 -> 19425 bytes v0.8.79/assets/site.webmanifest | 19 + v0.8.79/assets/themes/documenter-dark.css | 7 + v0.8.79/assets/themes/documenter-light.css | 9 + v0.8.79/assets/themeswap.js | 84 + v0.8.79/assets/warner.js | 52 + v0.8.79/features/atlases.html | 47 + v0.8.79/features/differentiation.html | 2 + v0.8.79/features/distributions.html | 2 + v0.8.79/features/integration.html | 2 + v0.8.79/features/statistics.html | 169 + v0.8.79/features/testing.html | 31 + v0.8.79/features/utilities.html | 8 + v0.8.79/index.html | 22 + v0.8.79/manifolds/centeredmatrices.html | 11 + v0.8.79/manifolds/choleskyspace.html | 6 + v0.8.79/manifolds/circle.html | 3 + v0.8.79/manifolds/connection.html | 26 + v0.8.79/manifolds/elliptope.html | 10 + v0.8.79/manifolds/essentialmanifold.html | 2 + v0.8.79/manifolds/euclidean.html | 4 + v0.8.79/manifolds/fixedrankmatrices.html | 20 + v0.8.79/manifolds/flag.html | 19 + v0.8.79/manifolds/generalizedgrassmann.html | 11 + v0.8.79/manifolds/generalizedstiefel.html | 8 + v0.8.79/manifolds/generalunitary.html | 44 + v0.8.79/manifolds/graph.html | 18 + v0.8.79/manifolds/grassmann.html | 35 + v0.8.79/manifolds/group.html | 120 + v0.8.79/manifolds/hyperbolic-1351fb78.svg | 40 + v0.8.79/manifolds/hyperbolic-24926033.svg | 38 + v0.8.79/manifolds/hyperbolic-398c94f2.svg | 72 + v0.8.79/manifolds/hyperbolic-474d2bfa.svg | 1958 ++++++++++++ v0.8.79/manifolds/hyperbolic-7cd147e1.svg | 25 + v0.8.79/manifolds/hyperbolic-84e7457e.svg | 1969 ++++++++++++ v0.8.79/manifolds/hyperbolic-8cac781a.svg | 1946 ++++++++++++ v0.8.79/manifolds/hyperbolic-a6072b09.svg | 48 + v0.8.79/manifolds/hyperbolic-c5aa0be1.svg | 375 +++ v0.8.79/manifolds/hyperbolic-c68a7042.svg | 69 + v0.8.79/manifolds/hyperbolic-cd62041b.svg | 73 + v0.8.79/manifolds/hyperbolic-fa42d76a.svg | 75 + v0.8.79/manifolds/hyperbolic.html | 148 + v0.8.79/manifolds/lorentz.html | 3 + v0.8.79/manifolds/metric.html | 7 + v0.8.79/manifolds/multinomial.html | 2 + .../multinomialdoublystochastic.html | 17 + v0.8.79/manifolds/multinomialsymmetric.html | 10 + v0.8.79/manifolds/oblique.html | 2 + v0.8.79/manifolds/positivenumbers.html | 2 + v0.8.79/manifolds/power.html | 56 + v0.8.79/manifolds/probabilitysimplex.html | 26 + v0.8.79/manifolds/product.html | 10 + v0.8.79/manifolds/projectivespace.html | 12 + v0.8.79/manifolds/quotient.html | 4 + v0.8.79/manifolds/rotations.html | 15 + v0.8.79/manifolds/shapespace-c55b3c02.svg | 56 + v0.8.79/manifolds/shapespace.html | 22 + v0.8.79/manifolds/skewhermitian.html | 3 + v0.8.79/manifolds/spdfixeddeterminant.html | 11 + v0.8.79/manifolds/spectrahedron.html | 12 + v0.8.79/manifolds/sphere-a2e75fff.svg | 2737 ++++++++++++++++ v0.8.79/manifolds/sphere-fe712381.svg | 2826 +++++++++++++++++ v0.8.79/manifolds/sphere-fe905472.svg | 2811 ++++++++++++++++ v0.8.79/manifolds/sphere.html | 27 + .../manifolds/spheresymmetricmatrices.html | 5 + v0.8.79/manifolds/stiefel.html | 128 + v0.8.79/manifolds/symmetric.html | 6 + .../manifolds/symmetricpositivedefinite.html | 54 + v0.8.79/manifolds/symmetricpsdfixedrank.html | 11 + v0.8.79/manifolds/symplectic.html | 111 + v0.8.79/manifolds/symplecticstiefel.html | 82 + v0.8.79/manifolds/torus.html | 13 + v0.8.79/manifolds/tucker.html | 17 + v0.8.79/manifolds/vector_bundle.html | 34 + v0.8.79/misc/about.html | 2 + v0.8.79/misc/contributing.html | 9 + v0.8.79/misc/internals.html | 8 + v0.8.79/misc/notation.html | 2 + v0.8.79/misc/references.html | 225 ++ v0.8.79/references.bib | 829 +++++ v0.8.79/search_index.js | 3 + v0.8.79/siteinfo.js | 1 + v0.8.79/tutorials/getstarted.html | 66 + v0.8.79/tutorials/hand-gestures.html | 103 + .../figure-commonmark/cell-11-output-1.svg | 52 + .../figure-commonmark/cell-12-output-1.svg | 95 + .../figure-commonmark/cell-13-output-1.svg | 643 ++++ .../figure-commonmark/cell-5-output-1.svg | 76 + v0.8.79/tutorials/integration.html | 77 + v0.8.79/tutorials/working-in-charts.html | 79 + .../working-in-charts-geodesic.png | Bin 0 -> 322266 bytes .../working-in-charts-transport.png | Bin 0 -> 325572 bytes versions.js | 2 +- 115 files changed, 19926 insertions(+), 3 deletions(-) create mode 100644 v0.8.79/.documenter-siteinfo.json create mode 100644 v0.8.79/assets/android-chrome-192x192.png create mode 100644 v0.8.79/assets/android-chrome-512x512.png create mode 100644 v0.8.79/assets/apple-touch-icon.png create mode 100644 v0.8.79/assets/citations.css create mode 100644 v0.8.79/assets/documenter.js create mode 100644 v0.8.79/assets/favicon-16x16.png create mode 100644 v0.8.79/assets/favicon-32x32.png create mode 100644 v0.8.79/assets/favicon.ico create mode 100644 v0.8.79/assets/images/SPDSignal.png create mode 100644 v0.8.79/assets/images/projection_illustration.png create mode 100644 v0.8.79/assets/images/projection_illustration_600.png create mode 100644 v0.8.79/assets/images/retraction_illustration.png create mode 100644 v0.8.79/assets/images/retraction_illustration_600.png create mode 100644 v0.8.79/assets/logo-dark.png create mode 100644 v0.8.79/assets/logo-dark_bg.png create mode 100644 v0.8.79/assets/logo-text-readme-dark.png create mode 100644 v0.8.79/assets/logo-text-readme.png create mode 100644 v0.8.79/assets/logo.png create mode 100644 v0.8.79/assets/logo_bg.png create mode 100644 v0.8.79/assets/mstile-150x150.png create mode 100644 v0.8.79/assets/site.webmanifest create mode 100644 v0.8.79/assets/themes/documenter-dark.css create mode 100644 v0.8.79/assets/themes/documenter-light.css create mode 100644 v0.8.79/assets/themeswap.js create mode 100644 v0.8.79/assets/warner.js create mode 100644 v0.8.79/features/atlases.html create mode 100644 v0.8.79/features/differentiation.html create mode 100644 v0.8.79/features/distributions.html create mode 100644 v0.8.79/features/integration.html create mode 100644 v0.8.79/features/statistics.html create mode 100644 v0.8.79/features/testing.html create mode 100644 v0.8.79/features/utilities.html create mode 100644 v0.8.79/index.html create mode 100644 v0.8.79/manifolds/centeredmatrices.html create mode 100644 v0.8.79/manifolds/choleskyspace.html create mode 100644 v0.8.79/manifolds/circle.html create mode 100644 v0.8.79/manifolds/connection.html create mode 100644 v0.8.79/manifolds/elliptope.html create mode 100644 v0.8.79/manifolds/essentialmanifold.html create mode 100644 v0.8.79/manifolds/euclidean.html create mode 100644 v0.8.79/manifolds/fixedrankmatrices.html create mode 100644 v0.8.79/manifolds/flag.html create mode 100644 v0.8.79/manifolds/generalizedgrassmann.html create mode 100644 v0.8.79/manifolds/generalizedstiefel.html create mode 100644 v0.8.79/manifolds/generalunitary.html create mode 100644 v0.8.79/manifolds/graph.html create mode 100644 v0.8.79/manifolds/grassmann.html create mode 100644 v0.8.79/manifolds/group.html create mode 100644 v0.8.79/manifolds/hyperbolic-1351fb78.svg create mode 100644 v0.8.79/manifolds/hyperbolic-24926033.svg create mode 100644 v0.8.79/manifolds/hyperbolic-398c94f2.svg create mode 100644 v0.8.79/manifolds/hyperbolic-474d2bfa.svg create mode 100644 v0.8.79/manifolds/hyperbolic-7cd147e1.svg create mode 100644 v0.8.79/manifolds/hyperbolic-84e7457e.svg create mode 100644 v0.8.79/manifolds/hyperbolic-8cac781a.svg create mode 100644 v0.8.79/manifolds/hyperbolic-a6072b09.svg create mode 100644 v0.8.79/manifolds/hyperbolic-c5aa0be1.svg create mode 100644 v0.8.79/manifolds/hyperbolic-c68a7042.svg create mode 100644 v0.8.79/manifolds/hyperbolic-cd62041b.svg create mode 100644 v0.8.79/manifolds/hyperbolic-fa42d76a.svg create mode 100644 v0.8.79/manifolds/hyperbolic.html create mode 100644 v0.8.79/manifolds/lorentz.html create mode 100644 v0.8.79/manifolds/metric.html create mode 100644 v0.8.79/manifolds/multinomial.html create mode 100644 v0.8.79/manifolds/multinomialdoublystochastic.html create mode 100644 v0.8.79/manifolds/multinomialsymmetric.html create mode 100644 v0.8.79/manifolds/oblique.html create mode 100644 v0.8.79/manifolds/positivenumbers.html create mode 100644 v0.8.79/manifolds/power.html create mode 100644 v0.8.79/manifolds/probabilitysimplex.html create mode 100644 v0.8.79/manifolds/product.html create mode 100644 v0.8.79/manifolds/projectivespace.html create mode 100644 v0.8.79/manifolds/quotient.html create mode 100644 v0.8.79/manifolds/rotations.html create mode 100644 v0.8.79/manifolds/shapespace-c55b3c02.svg create mode 100644 v0.8.79/manifolds/shapespace.html create mode 100644 v0.8.79/manifolds/skewhermitian.html create mode 100644 v0.8.79/manifolds/spdfixeddeterminant.html create mode 100644 v0.8.79/manifolds/spectrahedron.html create mode 100644 v0.8.79/manifolds/sphere-a2e75fff.svg create mode 100644 v0.8.79/manifolds/sphere-fe712381.svg create mode 100644 v0.8.79/manifolds/sphere-fe905472.svg create mode 100644 v0.8.79/manifolds/sphere.html create mode 100644 v0.8.79/manifolds/spheresymmetricmatrices.html create mode 100644 v0.8.79/manifolds/stiefel.html create mode 100644 v0.8.79/manifolds/symmetric.html create mode 100644 v0.8.79/manifolds/symmetricpositivedefinite.html create mode 100644 v0.8.79/manifolds/symmetricpsdfixedrank.html create mode 100644 v0.8.79/manifolds/symplectic.html create mode 100644 v0.8.79/manifolds/symplecticstiefel.html create mode 100644 v0.8.79/manifolds/torus.html create mode 100644 v0.8.79/manifolds/tucker.html create mode 100644 v0.8.79/manifolds/vector_bundle.html create mode 100644 v0.8.79/misc/about.html create mode 100644 v0.8.79/misc/contributing.html create mode 100644 v0.8.79/misc/internals.html create mode 100644 v0.8.79/misc/notation.html create mode 100644 v0.8.79/misc/references.html create mode 100644 v0.8.79/references.bib create mode 100644 v0.8.79/search_index.js create mode 100644 v0.8.79/siteinfo.js create mode 100644 v0.8.79/tutorials/getstarted.html create mode 100644 v0.8.79/tutorials/hand-gestures.html create mode 100644 v0.8.79/tutorials/hand-gestures_files/figure-commonmark/cell-11-output-1.svg create mode 100644 v0.8.79/tutorials/hand-gestures_files/figure-commonmark/cell-12-output-1.svg create mode 100644 v0.8.79/tutorials/hand-gestures_files/figure-commonmark/cell-13-output-1.svg create mode 100644 v0.8.79/tutorials/hand-gestures_files/figure-commonmark/cell-5-output-1.svg create mode 100644 v0.8.79/tutorials/integration.html create mode 100644 v0.8.79/tutorials/working-in-charts.html create mode 100644 v0.8.79/tutorials/working-in-charts/working-in-charts-geodesic.png create mode 100644 v0.8.79/tutorials/working-in-charts/working-in-charts-transport.png diff --git a/stable b/stable index 197d239d02..da9448a6b4 120000 --- a/stable +++ b/stable @@ -1 +1 @@ -v0.8.78 \ No newline at end of file +v0.8.79 \ No newline at end of file diff --git a/v0.8 b/v0.8 index 197d239d02..da9448a6b4 120000 --- a/v0.8 +++ b/v0.8 @@ -1 +1 @@ -v0.8.78 \ No newline at end of file +v0.8.79 \ No newline at end of file diff --git a/v0.8.79/.documenter-siteinfo.json b/v0.8.79/.documenter-siteinfo.json new file mode 100644 index 0000000000..5c1dd2f9c3 --- /dev/null +++ b/v0.8.79/.documenter-siteinfo.json @@ -0,0 +1 @@ +{"documenter":{"julia_version":"1.9.3","generation_timestamp":"2023-09-26T21:24:53","documenter_version":"1.0.1"}} \ No newline at end of file diff --git a/v0.8.79/assets/android-chrome-192x192.png b/v0.8.79/assets/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..55076c276406cb50e67a5232e5b7c246b5cfebfa GIT binary patch literal 34295 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

Pt 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 F`9H0~DDeOQ literal 0 HcmV?d00001 diff --git a/v0.8.79/assets/apple-touch-icon.png b/v0.8.79/assets/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a08856269184b7674ea315061627f94da0eb0145 GIT binary patch literal 31371 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 { + x["id"] = key; // minisearch requires a unique for each object + return x; +}); + +// list below is the lunr 2.1.3 list minus the intersect with names(Base) +// (all, any, get, in, is, only, which) and (do, else, for, let, where, while, with) +// ideally we'd just filter the original list but it's not available as a variable +const stopWords = new Set([ + "a", + "able", + "about", + "across", + "after", + "almost", + "also", + "am", + "among", + "an", + "and", + "are", + "as", + "at", + "be", + "because", + "been", + "but", + "by", + "can", + "cannot", + "could", + "dear", + "did", + "does", + "either", + "ever", + "every", + "from", + "got", + "had", + "has", + "have", + "he", + "her", + "hers", + "him", + "his", + "how", + "however", + "i", + "if", + "into", + "it", + "its", + "just", + "least", + "like", + "likely", + "may", + "me", + "might", + "most", + "must", + "my", + "neither", + "no", + "nor", + "not", + "of", + "off", + "often", + "on", + "or", + "other", + "our", + "own", + "rather", + "said", + "say", + "says", + "she", + "should", + "since", + "so", + "some", + "than", + "that", + "the", + "their", + "them", + "then", + "there", + "these", + "they", + "this", + "tis", + "to", + "too", + "twas", + "us", + "wants", + "was", + "we", + "were", + "what", + "when", + "who", + "whom", + "why", + "will", + "would", + "yet", + "you", + "your", +]); + +let index = new minisearch({ + fields: ["title", "text"], // fields to index for full-text search + storeFields: ["location", "title", "text", "category", "page"], // fields to return with search results + processTerm: (term) => { + let word = stopWords.has(term) ? null : term; + if (word) { + // custom trimmer that doesn't strip @ and !, which are used in julia macro and function names + word = word + .replace(/^[^a-zA-Z0-9@!]+/, "") + .replace(/[^a-zA-Z0-9@!]+$/, ""); + } + + return word ?? null; + }, + // add . as a separator, because otherwise "title": "Documenter.Anchors.add!", would not find anything if searching for "add!", only for the entire qualification + tokenize: (string) => string.split(/[\s\-\.]+/), + // options which will be applied during the search + searchOptions: { + boost: { title: 100 }, + fuzzy: 2, + processTerm: (term) => { + let word = stopWords.has(term) ? null : term; + if (word) { + word = word + .replace(/^[^a-zA-Z0-9@!]+/, "") + .replace(/[^a-zA-Z0-9@!]+$/, ""); + } + + return word ?? null; + }, + tokenize: (string) => string.split(/[\s\-\.]+/), + }, +}); + +index.addAll(data); + +let filters = [...new Set(data.map((x) => x.category))]; +var modal_filters = make_modal_body_filters(filters); +var filter_results = []; + +$(document).on("keyup", ".documenter-search-input", function (event) { + // Adding a debounce to prevent disruptions from super-speed typing! + debounce(() => update_search(filter_results), 300); +}); + +$(document).on("click", ".search-filter", function () { + if ($(this).hasClass("search-filter-selected")) { + $(this).removeClass("search-filter-selected"); + } else { + $(this).addClass("search-filter-selected"); + } + + // Adding a debounce to prevent disruptions from crazy clicking! + debounce(() => get_filters(), 300); +}); + +/** + * A debounce function, takes a function and an optional timeout in milliseconds + * + * @function callback + * @param {number} timeout + */ +function debounce(callback, timeout = 300) { + clearTimeout(timer); + timer = setTimeout(callback, timeout); +} + +/** + * Make/Update the search component + * + * @param {string[]} selected_filters + */ +function update_search(selected_filters = []) { + let initial_search_body = ` +

+ `; + + let querystring = $(".documenter-search-input").val(); + + if (querystring.trim()) { + results = index.search(querystring, { + filter: (result) => { + // Filtering results + if (selected_filters.length === 0) { + return result.score >= 1; + } else { + return ( + result.score >= 1 && selected_filters.includes(result.category) + ); + } + }, + }); + + let search_result_container = ``; + let search_divider = `
`; + + if (results.length) { + let links = []; + let count = 0; + let search_results = ""; + + results.forEach(function (result) { + if (result.location) { + // Checking for duplication of results for the same page + if (!links.includes(result.location)) { + search_results += make_search_result(result, querystring); + count++; + } + + links.push(result.location); + } + }); + + let result_count = `
${count} result(s)
`; + + search_result_container = ` +
+ ${modal_filters} + ${search_divider} + ${result_count} +
+ ${search_results} +
+
+ `; + } else { + search_result_container = ` +
+ ${modal_filters} + ${search_divider} +
0 result(s)
+
+
No result found!
+ `; + } + + if ($(".search-modal-card-body").hasClass("is-justify-content-center")) { + $(".search-modal-card-body").removeClass("is-justify-content-center"); + } + + $(".search-modal-card-body").html(search_result_container); + } else { + filter_results = []; + modal_filters = make_modal_body_filters(filters, filter_results); + + if (!$(".search-modal-card-body").hasClass("is-justify-content-center")) { + $(".search-modal-card-body").addClass("is-justify-content-center"); + } + + $(".search-modal-card-body").html(initial_search_body); + } +} + +/** + * Make the modal filter html + * + * @param {string[]} filters + * @param {string[]} selected_filters + * @returns string + */ +function make_modal_body_filters(filters, selected_filters = []) { + let str = ``; + + filters.forEach((val) => { + if (selected_filters.includes(val)) { + str += `
${val}`; + } else { + str += `${val}`; + } + }); + + let filter_html = ` +
+ Filters: + ${str} +
+ `; + + return filter_html; +} + +/** + * Make the result component given a minisearch result data object and the value of the search input as queryString. + * To view the result object structure, refer: https://lucaong.github.io/minisearch/modules/_minisearch_.html#searchresult + * + * @param {object} result + * @param {string} querystring + * @returns string + */ +function make_search_result(result, querystring) { + let search_divider = `
`; + let display_link = + result.location.slice(Math.max(0), Math.min(50, result.location.length)) + + (result.location.length > 30 ? "..." : ""); // To cut-off the link because it messes with the overflow of the whole div + + if (result.page !== "") { + display_link += ` (${result.page})`; + } + + let textindex = new RegExp(`\\b${querystring}\\b`, "i").exec(result.text); + let text = + textindex !== null + ? result.text.slice( + Math.max(textindex.index - 100, 0), + Math.min( + textindex.index + querystring.length + 100, + result.text.length + ) + ) + : ""; // cut-off text before and after from the match + + let display_result = text.length + ? "..." + + text.replace( + new RegExp(`\\b${querystring}\\b`, "i"), // For first occurrence + '$&' + ) + + "..." + : ""; // highlights the match + + let in_code = false; + if (!["page", "section"].includes(result.category.toLowerCase())) { + in_code = true; + } + + // We encode the full url to escape some special characters which can lead to broken links + let result_div = ` + +
+
${result.title}
+
${result.category}
+
+

+ ${display_result} +

+
+ ${display_link} +
+
+ ${search_divider} + `; + + return result_div; +} + +/** + * Get selected filters, remake the filter html and lastly update the search modal + */ +function get_filters() { + let ele = $(".search-filters .search-filter-selected").get(); + filter_results = ele.map((x) => $(x).text().toLowerCase()); + modal_filters = make_modal_body_filters(filters, filter_results); + update_search(filter_results); +} + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// Modal settings dialog +$(document).ready(function () { + var settings = $("#documenter-settings"); + $("#documenter-settings-button").click(function () { + settings.toggleClass("is-active"); + }); + // Close the dialog if X is clicked + $("#documenter-settings button.delete").click(function () { + settings.removeClass("is-active"); + }); + // Close dialog if ESC is pressed + $(document).keyup(function (e) { + if (e.keyCode == 27) settings.removeClass("is-active"); + }); +}); + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +let search_modal_header = ` + +`; + +let initial_search_body = ` +
Type something to get started!
+`; + +let search_modal_footer = ` +
+ + Ctrl + + / to search + + esc to close +
+`; + +$(document.body).append( + ` + + ` +); + +document.querySelector(".docs-search-query").addEventListener("click", () => { + openModal(); +}); + +document.querySelector(".close-search-modal").addEventListener("click", () => { + closeModal(); +}); + +$(document).on("click", ".search-result-link", function () { + closeModal(); +}); + +document.addEventListener("keydown", (event) => { + if ((event.ctrlKey || event.metaKey) && event.key === "/") { + openModal(); + } else if (event.key === "Escape") { + closeModal(); + } + + return false; +}); + +// Functions to open and close a modal +function openModal() { + let searchModal = document.querySelector("#search-modal"); + + searchModal.classList.add("is-active"); + document.querySelector(".documenter-search-input").focus(); +} + +function closeModal() { + let searchModal = document.querySelector("#search-modal"); + let initial_search_body = ` +
Type something to get started!
+ `; + + searchModal.classList.remove("is-active"); + document.querySelector(".documenter-search-input").blur(); + + if (!$(".search-modal-card-body").hasClass("is-justify-content-center")) { + $(".search-modal-card-body").addClass("is-justify-content-center"); + } + + $(".documenter-search-input").val(""); + $(".search-modal-card-body").html(initial_search_body); +} + +document + .querySelector("#search-modal .modal-background") + .addEventListener("click", () => { + closeModal(); + }); + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// Manages the showing and hiding of the sidebar. +$(document).ready(function () { + var sidebar = $("#documenter > .docs-sidebar"); + var sidebar_button = $("#documenter-sidebar-button"); + sidebar_button.click(function (ev) { + ev.preventDefault(); + sidebar.toggleClass("visible"); + if (sidebar.hasClass("visible")) { + // Makes sure that the current menu item is visible in the sidebar. + $("#documenter .docs-menu a.is-active").focus(); + } + }); + $("#documenter > .docs-main").bind("click", function (ev) { + if ($(ev.target).is(sidebar_button)) { + return; + } + if (sidebar.hasClass("visible")) { + sidebar.removeClass("visible"); + } + }); +}); + +// Resizes the package name / sitename in the sidebar if it is too wide. +// Inspired by: https://github.com/davatron5000/FitText.js +$(document).ready(function () { + e = $("#documenter .docs-autofit"); + function resize() { + var L = parseInt(e.css("max-width"), 10); + var L0 = e.width(); + if (L0 > L) { + var h0 = parseInt(e.css("font-size"), 10); + e.css("font-size", (L * h0) / L0); + // TODO: make sure it survives resizes? + } + } + // call once and then register events + resize(); + $(window).resize(resize); + $(window).on("orientationchange", resize); +}); + +// Scroll the navigation bar to the currently selected menu item +$(document).ready(function () { + var sidebar = $("#documenter .docs-menu").get(0); + var active = $("#documenter .docs-menu .is-active").get(0); + if (typeof active !== "undefined") { + sidebar.scrollTop = active.offsetTop - sidebar.offsetTop - 15; + } +}); + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// Theme picker setup +$(document).ready(function () { + // onchange callback + $("#documenter-themepicker").change(function themepick_callback(ev) { + var themename = $("#documenter-themepicker option:selected").attr("value"); + if (themename === "auto") { + // set_theme(window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'); + window.localStorage.removeItem("documenter-theme"); + } else { + // set_theme(themename); + window.localStorage.setItem("documenter-theme", themename); + } + // We re-use the global function from themeswap.js to actually do the swapping. + set_theme_from_local_storage(); + }); + + // Make sure that the themepicker displays the correct theme when the theme is retrieved + // from localStorage + if (typeof window.localStorage !== "undefined") { + var theme = window.localStorage.getItem("documenter-theme"); + if (theme !== null) { + $("#documenter-themepicker option").each(function (i, e) { + e.selected = e.value === theme; + }); + } + } +}); + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// update the version selector with info from the siteinfo.js and ../versions.js files +$(document).ready(function () { + // If the version selector is disabled with DOCUMENTER_VERSION_SELECTOR_DISABLED in the + // siteinfo.js file, we just return immediately and not display the version selector. + if ( + typeof DOCUMENTER_VERSION_SELECTOR_DISABLED === "boolean" && + DOCUMENTER_VERSION_SELECTOR_DISABLED + ) { + return; + } + + var version_selector = $("#documenter .docs-version-selector"); + var version_selector_select = $("#documenter .docs-version-selector select"); + + version_selector_select.change(function (x) { + target_href = version_selector_select + .children("option:selected") + .get(0).value; + window.location.href = target_href; + }); + + // add the current version to the selector based on siteinfo.js, but only if the selector is empty + if ( + typeof DOCUMENTER_CURRENT_VERSION !== "undefined" && + $("#version-selector > option").length == 0 + ) { + var option = $( + "" + ); + version_selector_select.append(option); + } + + if (typeof DOC_VERSIONS !== "undefined") { + var existing_versions = version_selector_select.children("option"); + var existing_versions_texts = existing_versions.map(function (i, x) { + return x.text; + }); + DOC_VERSIONS.forEach(function (each) { + var version_url = documenterBaseURL + "/../" + each + "/"; + var existing_id = $.inArray(each, existing_versions_texts); + // if not already in the version selector, add it as a new option, + // otherwise update the old option with the URL and enable it + if (existing_id == -1) { + var option = $( + "" + ); + version_selector_select.append(option); + } else { + var option = existing_versions[existing_id]; + option.value = version_url; + option.disabled = false; + } + }); + } + + // only show the version selector if the selector has been populated + if (version_selector_select.children("option").length > 0) { + version_selector.toggleClass("visible"); + } +}); + +}) diff --git a/v0.8.79/assets/favicon-16x16.png b/v0.8.79/assets/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9e119f1ba8a4425bb6c520cf38f68fbb65e6ed GIT binary patch literal 1358 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 IM6N<$f^Z_e4gdfE literal 0 HcmV?d00001 diff --git a/v0.8.79/assets/favicon.ico b/v0.8.79/assets/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..19440dacc5c0f25e7c802448f54a60ba4dfbcefb GIT binary patch literal 15086 zcmd^Gdt6slw*T=^jOs#`q9Fc|_Zxmc-Y6o7yg?KNU-)RoLeYE+K7o9aiVFEkdt5W? zR#R!&+?mqQ(#pr3JJWos`6Gv!JGWBHtkg(}b-&+z&iVNZWrT~}f9|Q}KEHGJUi-V( zUTf`r*4mg%4kjm4bhHVjkLiT~lPTV0GWq!Ezuiryvv}r?lJCo%O{TS|5R5u#Vwwu# zb9MP^#s9~DqxX$( z-0}?`p|SM236FcfGG&iLSNZ+3`XQEm1EQ0TRa=tZ`!qWF-Rri{x5sR zZmeFDQ#qh>+&Zo`B>S>sWWw)r!eV}N8f9BlQj>j&8mCuxJHs(Qg6tCmBE^HgUwgPk2!=A_O?!#hV?GX`wXi<3F>z8paQAtM> z-pItag}!Cuukh+P|3y|M?`fEo*JgJZ%t&ei2D%Lbngui)rs zeZpd2IRk$vkqQ5A`d4{l9eOoQO>a4wMy=^XU@U4 zQEL>z-$I{Oo>`r}*av)Xx(4{pcMi3_&_JI;*;D5YykW7gNnqp?GQf9%j<-zu^dBo8 zUXv8|e%{l>YtSR&?YrQId)?z|!Mp@i4B|YHcwZ9g5m;MhE&gF#bdeN>W~wpd1`n5v zfE3&hm*R*#nPe@N(0Y z&(Y^>$X_nCSqr5yZKj%ov5^JBdC3SEiV|~!v2bo`GZ)C#k&nug@U1MdE?iuZF*n^F zJ+Su*jd|&1*sQ`G41Mkoy|~|_Q2Kg~qh5%oPlcERR!XqtS?JIqHAhy%7GMX;9}PM6 z5z0RHyzTGdclv-nf(^q~)p{kor);S^&<&ZMFi}dP3Iuv4S%JeO)i+7$8Q&2<>phmg z{AJ9M&Cfw^hQVgPHT?Xb;C149PpI7EW|jT}r^7BEw_#THt8ABk|CF)~t_k`Y@Dj?K z=GGVkusefZ0x2Iu9ml>w`5mrZv|nQ^m1z|+Dm+Jm`})hE-UDU!;0L)rt91dk{O!8j zCBw)!DC$Z0%inCnTBWeC^b6f6ZoP*>{`nFRvE9z!XloU9Mfp$V{|^JZ&Hv9cuy#}e z`#j>`J6`kuv{9}B#LegQLwm5E5$lrlS&}j+L9AX8GH>W~W!oI{woz+kWB!WmHJJ;5 z{WV|6{!`j4eGBb3AYun>bE5R~eh~V^HGunt*RcM+r-;6Yve*15*9WzKxPUUIBizPw zV2lA>AXcus#K}3JjdBn46sR6PlfUWvM}}odPH?&`O`i?>U88K8W5v5qVdKF5Mj3Fo z&~CN;%=_>)yLG=p{8$5kmuoKN&foO=#H`K3`v(34cxKZ{18@5hxVZ)&ApU36x>aYB zyV?io`w8ObZ{nvt!)8@|j)8Un-_(K<*nhi+Ymm|(;#9upb!D#}1IpA`_)L@cF|8iP zL0jRvz~{jIBZzBMr!HV02l|n6r#^76gSAz#*HL>1uF3FI3NzOU+B4^Z&p0lw5nJ&a z{*>6yDBaNaWt#s#0$)ELK7Ne&hiy?9wSAkm*P-sy2XTGS=HkO9;J>d^;86+K?*lc_ z2XURHPvIWIunF!T=$96zmaDa4qII+yC;dNtFW=V}R&xwzu-<+}9GY$)S2jRfFbAxV zKAxpAC}_3Xck-F$XW(eFquM)S~H^UY%CWVdqO7$H1?1y`>F%`OH>2Z(yg*Qtu&e zgZAO~T?VesmcV!y@IFh-B+8Y(hq^=gQuj-vM=IN0K70;*D|L##X``A8>Js)7*P+Kh zQTDV?`Wjsy1nZgFAN0i-cu&92{Tt_j`(_>gCn&=@i@AM0;0^_SLi~mgrF^*#JeIdy zVdwthvAktA8>b!6Z&CNKC;AC^ztjBThf1d@Th0Z2>3~6V)!OSH)?mYK8Eo@67lD0D zdrV#Z4eZ6Bi`p2peKg0gc-Ty}22Zezg0F$z!_KK!v=y!yv}26nJFGo_B4(vS@bh+h zfpx4N`-kyr9JE(ExnD)Sc_8lZyLAD#BZzC-RgQt!h>^IthnPR~VI_OMBN4aKA?VxQ z@eO|hh6c(sLhYA-r(=YEKu5T*=iZ0=V|*7VyFmRbpk<(*-2!gc7`S?ZmV&O(?_i&= z_NF<&zZ%~O9Fwt5)5mfRpxvW>18^k5hyMfd1vLihj-f;JOWuBq)g1T+ujiP~qyDTr ziQO26K89JagY(?$WCsnCDY0Xff7NuSPWPc}j5XpPXanpg9f7|R`tu`o2*2&AES=9P=vd_6%@d zvBTd6ANzOM@#2@tcDdRMEhgm;n1_==pvj=cpc$Yv(EWfs0(EOai$GrX?e6eBd9#mN z2M31{zJal_fD@_oxzx_+9C?yA`(R&p`eKZB28i-`5OfbnT_blSxq^a0g`oMM z`jI=6p2^!B{}PG!c(xg|05lR507*U+B?=^UA9?59!@S!8RV(+W*@)Q#c$gp*ZW;|3{2{C zB7J4_xuTs(Z3?fByKsAw6h59P1)$tbaf*1)XMAU0mu<;oU~=CRt`E5EAa78I-_PA0 z)byh{JNd-bnUiv5I)lXU2F~mu+%3 z#7X41LE=BcQ^H1@FOoO==q}D%wTIlCL5raam(#1GCAh#_eAD|$^dw)&S|1|?4G9X9 zk}vcHvXy*1Bk|tQA>w9TwuzqPCzJzuktcbpKG4^#Fm&e`_!fh{B|hpw((Dk`w_iqo zNth9&^o8#V8WWYyQ^whKkUxm`v<1FXb)ZXZL%I8-ed4STd);Cm-QL&Qj}`pfK}Xp) zDUZ4UN|+HW{+Yl49Ptka*>uIgs&oeRY-7@Oigg3BJV9QH2la|P4gM&Pf!ysebmtzt z5ZOMa} z$y4#hSlJi*w8zk$d*DulY`&$xpxr57Ncmzc?3?->GtFOohxLO^_g8kQutA=bDet4p zG+U+3vo71Pt$~?5IY#<3_QgKCgW0|%6TOX&{Cj29xv2Tuxb{LrJrN$6a z=q+*6110XEK;b?8Oi z>HinOms~dH+$ibKb2i2)`(!z^GD1Q}4V2z~_bS4Ar=HpBKo6<+%EoC=x-OD8`(R&p z6uiz1e0yMCr$Kkm5({-$je)WQ4nCs{smB?QS|s*Y0g8B^rR#{QgSy84g7c{JI!oT{ ztf!h0)3~ z)nsa6X*QWIu~&R8HJe=UKTAAE*~AiGv_@G&J{U#&(qu|)C5sznb({9vCW|rt*{wi`EE#(`LAMDE?TFl?@x72_m$`+GJjoTGBJ$azO4O4E=3H4E>LYgMNwo zvxvhrAP3N|BW8%j_d^V|0T|9AR{te(Zhyr6Cgdc-%2TFvO4o7b17}>`n1(nv`&02_ zEeC4LXYNGo=_WZK{?h}r)5z5@7s;3$W4efUodt$zw>xixJV8&yqpMJU&)7SOeKW_w z{Dz+EK&}=Z!6+b=b58mK7!{^n9pKdnS}U0&&yPy?Ag98fBS`QazGBT0{vfM zpN!jT`5^X-b75Leh`E@y5X=4wG+{oSXSqmy*5*{rLjItQF;(Uqw0zDcb>@OHV0;+; zUqSw)Vt(pFH_ZidA?c9$mpmWBei3_RF`HXK9VwEet@|REzi38OXNM$(av_^yuu^Nt^DPxq z$C(+N+gPab^d3ALfpZ4lev5=Td{6U?Ml?!YoeSBw8goEDM4iXkB$)>NV?I@r$p+fz73lR( z?4R?`yfgFa{RT``IaB%^zSGZ<;0)oZ+vd_?2h5=#VqS{<&=+kftX2BYyg7eUHatrL zT*z}C`;NYqP#GRmCS83KgPMon9ri`jE?&1=sEh&0DVS3JO$^i#vx}-y`WrJ zavp&1IQUP)_`j$AY3tp4%IEYS_-n}G-_FDi{m+z+`ncWm7ba~VQkT2*Oi_5Y@ z%7gX@Kk+^0YFcdSN4+q|OR=_niE+}m@yyF-z5C`I>E-In*m;-t4|cd5z1;deIM^rd z2z2c;^w$EJv~q6%*)M&uY?nG01KB%6_TlJ%6etUFFgrLn7lKa}$ZW^2tG8@h<>cs8 zh;wdc^qmD7g*`$9=HPbU!k%cm7&H!a)0$nhE7=*}Nq3QWk2>uy?ors5Jjko77uV?F zAm$aKCcK!&Tu3~q0<<09#0L-`I85TbdbT5J7VDrc{j-siAdj2YdpzsRb&s=))6BkM z?oZ=e_%Pzl-++Hx;daD^5L@7PK1s!j@Qm+Rhjl&BhHcS_EuYhw4(;oVd1iv{@S9r^;v9_AkQnnYp0f_)m%;hoKcVfbc155T^5z&-Oq%iN@*wq_aS}uR z>K=9YjxkWyWgE675ArhjcD95(SE#-*zi6*y&)6#C+l+Ioc#S@O-mBO*Vri_yIba*& zBMv+xU@V_JlO73CF@Ez95AjLyP%_~&zN0>ba4l7_uNt#p)TaPgxj_ezh2zs-w#a?LL8TNVDhJ)qCi5DB?m-A+~kF$lIt`G3Iy# z;$tKuZVX?j#md&jTwoit4eM%ux2lhM?g^h_1%@in0r37a`ucCgd%hy^p3nGBuVY31 zn|$`Icz5*~Vook;%cJ^(!iO%7NFec^&ye#(graK~qXlhlm#SM`np0a`n$4G7n%$b6 znp~Qk@SjVwQ;kcr1Bqc5MF_Vr`<8`Rx7l1>*xR^cU$GGT-pyEF)A4=r zGfw!%a=~7IA@(}wxv#{Y<2ugYJz})S`MBBGuU_Zg5POvK*q<-Nw~|e!XgdS@)T{hH z=C>Np(GLn<`wsRBna++*nX?8@dk1Ha)i)NuJF(Ba3Leb+oA7;U#hJ#lexaMOzkgJC z?uqA-L9aVFx&-!g>JhjkefH}-56th#@}$YKAoXFMB|MA2If}t~ogMf)3hWJM;csnT zQF}G@J(O~~>IVMCD)s$?JwMJ+N@-M~tit(peCzB0=4Sql4$pmRf49@b{pAxwb#a8^E%}HHTRePVO!PTq+p+S5aeNCH%jc$JP^k?_$dAsh2O8-FJiBTw(r(* zj|e%Q!{1aK#CKDNJ`MYQ^Z4kZgZR!q$GskOq89C4&|etlFT}~om3zAY_BrZ_hF-!qeSbY3?V z*srA`=kr(Qn$>z?>?u%k?c_Vwxv3!@U@dV%PG~>dCCm(#L=e|I5_72ht>=yQv+k{U zz(?29pBrtM>u1iM?fFdi_4T)E%V!v;7uKXFvCe#rHK&dFD-z=QTra=oJJ#u_J)gsm z-31>x6n=9VXpc_I_zeE`rgOVLd}A{G*ZU^Z(N#DIREyYY(+zTI)?5?go~@ADCB}_0 MV)&Kwi literal 0 HcmV?d00001 diff --git a/v0.8.79/assets/images/SPDSignal.png b/v0.8.79/assets/images/SPDSignal.png new file mode 100644 index 0000000000000000000000000000000000000000..b3304c989f5204d94ef12e2e31b591f8cd2e0c20 GIT binary patch literal 47449 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
  • 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≺9~Vfj}%gT&~S~jWu-5QR(h>!Nk!N^aC~y;qo7 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 UUUl48#d6&Tjree{oA2lU57>!p;Q#;t literal 0 HcmV?d00001 diff --git a/v0.8.79/assets/images/projection_illustration_600.png b/v0.8.79/assets/images/projection_illustration_600.png new file mode 100644 index 0000000000000000000000000000000000000000..80d4612cf44e1b9cb8e8e48b5615e95a5364d391 GIT binary patch literal 55608 zcmeFZWmF!`wl3N@1b2eFySoPq7J|FGyF&;PJa~eJ;O_1rKyV1|1a}Co;WT_}t^KWg z_TA_1G4A=dGX@#&+dXSm)vRgH(+%Ouiqgn0@LvD`fGjH`sR96yn&6K%JS=$StekHK z05ICTRW)5zj66skogK`rY|Thry&TO*%{;Bl0l;&H1Ipth29ud4mwRMv5D7^-kMKj-hgwENOP z@Yy_6pZ6Ncrc5F|+UE4|VHWr@n|DLYA*TvU|xKT^LFVJc_)@r(1Ut`%8(f4~D zku>Ag7hciDNYZDJiFz~B<)QRJWNB`?FQX$JmF)ZRpx0xQ2am_GSDAgTxXj?f*X0xp z{lTS#j|*p2-#j*H&YFc+GLE+jmtPGu82F#IiKE8VE`I!mLb2$Wx&9)OF5lC56K_4@ zGTlbqBzCZsLP>VzSFiO_Jr{euOa+|>i3`H0-x=2eL15-iuh z4gH?7$v$d;fJeU?k*CIcc|xU$LUoOAg8Yt``;-H(@YQRl_@Iw2i$m^eKS_9k&>pVMe(Wj?{%pHqi>6f-bhgBDDrK`+t@d4zbVa)e@#~he=k*+YF(Z; zJ#Sr+qxG7p;it7t`31N40W9y9zV~6-l`t$1QIz2I`DzfGc{=yRP|Xnk!hs9pfJI)C zhL#&w!!5pm{le;Z=9Z)SJ7O9_x!v3ZCBBQ=iP6Ty`MNaw_RZ-9`;K)An=TslY z`&x*{T9Hcmu0{_(@JY%p{63KK_7A*#8A+@#9GtWfRWO3^^~rVhx^u$|VUH%^d_ z=4l=|9s9&{q$ zlKEwP*c3+C6ZTqK`f4-y08S0y!8D-zLmxHS#l1m56!481S-cI{Q?9~Y;9 zNoiYMbfq*8mC!bf#j@2ElcsB_kj%Xq8MgvayJ(4*Ns8?n4qln>@yTAh-zrGFQvW7A z_oZPlnD`b2iC_n_GM-jc@70_`BF-+J?1TLK?AWMN#H6}JEgYs~p^)f}RVkoP3oT_y z;L?V%v-YrlkJgQSE^+((M)7Bs#F_yEKQJ%wW;@&QP>83r#=xvKw*h`OTZ%tVSn8PW z&D_*cjES8~u0zV0s;(qlG^Q4n%I}wt4unftdZa&!KBxVBExyaypYnkUE0q{UNl5hF zLWURoRdyGm4Zclny3VGM`3!$F4!)%XPMkwJtPt!{n+iERLhgGTab6xido+mBh2Ph^*cXGLmGak~t z;Vx3dI9`xTq93mz>5n`fG5aWlZuUFx>8%r%p$Sa7bVV#d6|5CrB4guRrsk44f4TEc)@;$X3;Dssb{@yin6j|Y0dWznvx%h|#NmcL z$)JR^T87kNphRM>iZZg~r*hx+3*C1nf##$BWpzcc6vbZks)RY^+Ff3FVXZ1LQ=_vy zs;_Hpq;)U%!bpeT=kPIg1|2QBwiZ-CKq!uppO7}-M}7){Ft4|98-7hVafs8kP~)KA z7pfh3IV8t;0f|$ph^4eJ;p=wCs7!eg>exDTVQYSX>`R!3o≻CEDO|8dV{`egoH1 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 literal 0 HcmV?d00001 diff --git a/v0.8.79/assets/images/retraction_illustration.png b/v0.8.79/assets/images/retraction_illustration.png new file mode 100644 index 0000000000000000000000000000000000000000..a3d42d874de833c382dd5e70c83c8288c4e05051 GIT binary patch literal 263807 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%0AdXMA!;Vn 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 KSr=xw{QQ4fcX7r5 literal 0 HcmV?d00001 diff --git a/v0.8.79/assets/images/retraction_illustration_600.png b/v0.8.79/assets/images/retraction_illustration_600.png new file mode 100644 index 0000000000000000000000000000000000000000..e379593a464abb0a3c2c95691f44b1f238052c68 GIT binary patch literal 48906 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 literal 0 HcmV?d00001 diff --git a/v0.8.79/assets/logo-dark_bg.png b/v0.8.79/assets/logo-dark_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..d8d52c593bd7fb5b64fab0eac14d8c854ddf6528 GIT binary patch literal 190719 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≻HIO)PQ|NlGwpdNM3=0?H&@;t*Oz3su>x@ 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 literal 0 HcmV?d00001 diff --git a/v0.8.79/assets/logo-text-readme-dark.png b/v0.8.79/assets/logo-text-readme-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..e9d27c76c78b5246fb2a9fa76b54f133551aacaa GIT binary patch literal 31616 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 literal 0 HcmV?d00001 diff --git a/v0.8.79/assets/logo-text-readme.png b/v0.8.79/assets/logo-text-readme.png new file mode 100644 index 0000000000000000000000000000000000000000..4a83e9e8d830d23b45b46d27f1959d4232c7a977 GIT binary patch literal 34222 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 literal 0 HcmV?d00001 diff --git a/v0.8.79/assets/logo.png b/v0.8.79/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..fd89e1b523013f885cfc7dc57c8f2832c22dd511 GIT binary patch literal 187366 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Ƶ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%0AJ(#WbQvhesiDJDA zM_&w5U5f_fGmPa2fYl#AJIVdS2amUF7a(*jKDK}3c=@hmTI*C8sf3DD5oZcLD&Lc} zU04GEse#9lPK~ov`fBtbmZA}-!>i*DE5R)I2rn1_L3r5G4X07P7qkDU1(j7Zfr(G) zNi5HbqKJ=Oir134)N@uC8BaRJUuh0ptvKwh5=;JZZ(b+>^q0r?@yHvb^qf1!FW)D! zcK4p@ZCl@v{Vu{MX=>kt$>Do2sWB%Tv(KvZwPLbwtHc7r1*Oi}mGf3thh>cllk#?( zSt|x+AmVGKdhE?r+1gT|ILF|#W+G`uVRwPLFCn0Y-goJ7%bHTNVXgM<^sh)#QY_Co z>v#Z!kGe3`uB%ZZGf8{qy|T|}{OPL{dKJ3dzb27jp60UIEYTD6t!ydBQw{t~Jl>AI zupS*2EQ*Oh~T63wfHPMl3EYS*9$YR{r+<5WvzNuwE`quf~OCk zvo${B`}a^>KRw!)9{n=9JHET6t>aV-kxp*1i(?tFp6aVmfKIosB)i+$kuQUmVF*Q> z!10eXt@{C5!$>Pow=(>zUICL?&BUsVdH76{o$BRW<4MhEH$K*Wmxp%;C0|I>y`_kH)G zdO|Jomn2>>%b1k3IL$>r1%i0uf{SYbjVAKfP@;~;ad60=daa6XEWBbvOrV>fc;@Jw z%E>C8a*N#96SfPm&@F2f{a2>4-t}PpW`qgShxm5utqzBl@~b&n2vl(3xkldF=P#t; zc=pHoYmusjnHzT|Z`G}20*~Y=Tr?>6LJIOsm7)9?@h|+R@F1bsLBuglOf3y7#X9JsMLoq8TX<0X192LxHKO4m7Dx6K zGkCBvk&&U@EO;iOm*Hw0Ell`7O~24X-*z~b`{@BsyKdQKDcz2C%EBLz=0=a#n)ID} z$;RZDaY(1Om=ia$YxR46`N2By{QM-NI>E-OG`lZU|K%^%THo*6 z+UpH6C){5@LWwr!q0aoz#cMFDZNNd9R6nMo+}rhMYjlu7mDwthE&}_!5nVgIFoXrV zd7{XeOp~B4n<*tM$b|)HJ2&JhU-y#h#AhjHbxVNealGbi`#ymR?eQO8c<0?mXYN{DZuCU0BJEO|B|Q z7hr4ZY$gpm?y!1Eew>P{(O>2^wl|1T?%q>jJfj|yHF5dWMG&!luV|^-*|N^ ziYXmi=p&h}e)MMVrDk{?uvU{Z%V-VBWqBUt2&#T1#`e!sV-wWZj#Xr1QRfb`$85d| zE?-cYSN{6!02i%)n#nG4QX};1sf5nnn&brK3dg5y5w@Uu4Xp?E_L2^d5f=(=*gOD_EcK*S%8PuENz~q)uk$pE+PP$pSjTiK%|>H&FNo z-hR*7VtIMEZVb&tW~~%dN68;Jlg$189(5-YEvt*&x**HarY3Qp53a*Tc~J>zA`Gzt z;%=#1NTku>NS$-VN?~7?jHhllHZ7|SGiIWx_nQ^d=zZWi_EMwZ2K+jV`V*_w@NCg~ zVWoGqHM{ZFz^8e9Ud}RA8*DOwkth2U1|=Clu3BtIA}R&6(d{LL13t+z+<&HxJKyF9_Cb0UE&l7z^i&aVb(B zmi{4MlT!MPc7U^2GxgPjGsA`S1s<4*P!xA#rQA6ow}enPKT!)JfB{4l9u zK!&BuaTAyeRLfP|jL@Re`h3SYUR~r4QTn%tn?$2}okF_%JzQhDonEKILtP~|yu)%6 zBu|u*yXFSAbZ#AB6TnD=F&Ytnm#Zfv5l8L-ID6zD@)@-m^RAY!!m?^w_`uI&e6&v2 zlG6v}nkFBZJ=QiNtu6K`0Y}ez^O7&W0<`ZZ;%dhh&0(OeLq}e3hI{*L%!z%Wq%Kh{ z^g#vKcZTfTarP@j7XS&k5OJD2wLdZ2Ah^-=#ki-K=ZIAc3WTZ3B;(mSs0Cj@bJaQv z^ruwry%4RN69{!>LalZ4?db;&_YdwWa||6_Id@~-nt4ZSc3c20L~vbCc%0lZxyWsR zw13tp;68RD-Grx(@I&eF3X8KlG6`l9rE73`|1En{%#M4?4#qTAm zd_iD1F>hG0$v5zC#))g-RN1U zm~HJ_#t#h_+icxj$v^a1-@63uy)NkH#@$ID`SJQhYcVu__l|xiDV#YnnE54*7dyg* z_jwB+W@X@QvxRH3msZ;>j~%HD+HYpszs(*ULRutO@%K#wGpKOf^1?#YW%jH&Un{vq zi~xHnR-qulwNWl7#zDF*jg#ku`|yIQrbxq#1H;?Wn`EP7(Ei&Kx<7$cKfrNT2dkky z2<}-Z^FPog{pKgvqdCqf1G*@W;zfw%wB#ZRPf0aX`AGE zF{Ji#&{Z~=iL0G8P5@lkyD1j<6X-IQl1pb0_rjCnrgilr$~>kd2MLih{>gY<#8V!XY`fZm3;~MXtq^@da46BNR6XNE^PWC z<59xt5Ad9qQ=FeRQFUT16ie=RNeopl|Z2Q9O;2NW{Q2`3G9nkCtSFF(d}qQ!If)A)U^ zPr#Uqy}(dodu_5rLW=U-h>kuHv9n*yM#H}T0ZNw$;u?^5_leuC9S@Dz7~7rQNbE!b zUw;&o-lV@*$z%JDio1nh{!c^nW2lq&F?^PgV{4~Ko_u&BCp`Pq^D1s+FJLJUX8M$3 z&MpkzxZ76=+u*;zahXR{shev+GwJU7qFXe+3g0_@psK*%QZHwA zuMQ*`383u_*c!-ycn17%=H?cnrdeqd@P?qd9Xd(xqCU3z{E}u#NToAOHG|>`m1*F2 z_f?A9VNT2~GJ^O(X)rJJs{ubmLP}5bUx)qOC5-*{;Zp;@Ga=ZCJ!!1J$pcTBQM~~-)6~P;bggi?wh+zaettjtk%Y2n?x6UPAKP}z_x0s=R z^e)eb{4I0&B$r2pj^j7($by}gU=L+HgKYltg}&O%Z+G8+DO{%WbNLH|AN8Yybt-|X zaze90vb;f|s>Sy_*of?}`u98M;=*(+ZD)ZuM{~>G=fo~A00hB*nv=Xs+2PLo_zgH) z3llqV7B;Z1vOkSd*{mFZqa?1Pdq+Arh>Z>{Pyg;85egKI?K&nG6E!PlPTJC9OroGe zCiYmeRwrObO%a}8CZm=n!+4jMz3FUi+c=J%u+nO;ICHGGKjlnr56&Wv)c^4L%Ta*B zuCY)l5qa)NC)YN}a&;gKX>JOMbsxdjOM!_NC*XtzqOU_=gXvMxI>CHiSmvd#P5EXw zZd|q!)^24hY>EPg8%-RA)2(^x8W56tBAswv>z2;AfpMVuoOV4z6l>BVusPsaCd+|~ z_!)gwnkqQlf&O#t#fnuwz?|htF~P0DR7#z2|Kj~XnKh}E`)?5+AAls>G}(LDN0}?Y zW9?{l0HWuCb$3AL#hXyf7pyBKpuOwDUfYi2`>h?K~CZcmH#7uT@Br6QZe8 zKM}cXPX}{Bsb$}hQ$Vt1$3g_3l-iL?1K=fWKOrJih`{!LDyGY~=~FG$8tyCQjZ8*G z%CheAK2>oV+_6mH(UD`h$I+;Tz9>7-3+)5v2N3R?TB!}PSsjWnjS2mf0s8$fr41v?vo$N z&;c%Oxo+RKw)-1+N+l{i-LCg3c@^yJ<8!rJDp8u(Ws+cx-GIh(-?yN2+Cf?kNA+SH za+<6;BChxsFVXa#0?sv3;=-vr&xjmX^jp&_gi8JtWkNEPaH?ARjhk9Ar3>h@xLieR&O*mg{$rIRUlAft{Sv}}y0?!c+0ij> zFiji3VM@P&TxFYfo;BDo7n7g z_NbBcdHf5}1E_y#C^e&Uajj{MM}mfiF?eKZ?7o#lNIJN_rDZ2WOPt^SyD88l(d+{_ z;}kIn>*G}9-@hZ9?65J+0HwrvaRLL0jCcUhC2%7=_X}8{%Vuo9*pWlp9Y0RV^!d-Y zhLa9lER!B;3F=}&k{ll$5S=yX=g+Le-^_^5R0-&FS5mG|zo7ZIEAn9iVO0&~_klKO zwuC^E6N5dFl__)@|=^i45bY!C0D-L9O_!KiXs#fXfC2ux_VLPcQso zGyb9~Gkb(nD?wkT8%*LSM0&w|jZ0Qs%JDgP09pL!^NU6Ku9Y6!M;UIX+pRdaM189{X8@lg6%rxrNVv{mU&A@^ar>e`U z&%2uC=-u@QGJHM00zG+L2 z*&p4k8y^K56FUDkQB`z9Sepw3M5CIg4WB#Ey)}?U#DE^ocAxU_hS=o=+yB*yg~PcR>!2cWeKTrmKvq zvTNFh?hZ+j?(R^!K{^Bk1nHKLZs}0EyIZ=u1f{#Xkq*gk^StX@%U>>$``l;t%v>?E zc@6ddK~F6l;(+mE0wh#Q7Bj8(cZ+F9|LFFwKtrpVkPeKV{X5L=cx8eCPj9dU!^VY?Cy^i5s$Z*Ovb%)-IHtmQ z1w!#jpXgw+*PVBMp-1rBq1dw+T)IcyW;?!^HJR`< zx{5@=1uY%=)lSAA>ekv>vfEfY;LTdb(3JENLN2==dQj|Nk`a7f9+gyjJ3TS3zRW_@ zsA19VCoIb}xZLiPiL}M{H$+g7dK24KIDth)L~=qp;g+=%0{g-R2i$5)kB>vMme$1v zjCdM6+sK1@8Lv-qO@L{(@S-B$DlU~YYm*|)>ps{|2{!#U3z!V*|4=n4 ztcH5zL$Wk?cYOyVy{h%!QC5!@ZnYx?D|BCQC^&{MX$GJLrRI0w)E?BN(SMAvmO{AH zfuZ=hWLFeeScGfH|4!+37(7H9l#^lbZ$yFxWma7t3h2kgG15xoi8<6~zJs$#A7{nPg+&r6|v~6zk zje4xE3UV&qvsCSUgJ?^HwS{2Qm&{c&%_n?jtPZ1GJP&oW4I`!H=YQX{i$mQ+JJR-! z*CF(n?j70UPwH3mBXvttOrbG!AM#|v^5$eA60G6JZNFP@qTv#?kC>_;E^N9hCkDNO z;mN^^Y@_!=qbIzyz+#*yaW)xB$Ysu@UHQFJi<(1ohk+NO4GTq+!J48+>}Ep5E`WB| zJa2Ztd`(k^LEu0`0!QA7A5OSvb9E(c1cw+%DeUR>yko;l=H76dz!K19I7P1{bXvO!^mRQfS%gLBsTYL7pJu2=yEx&2)pNiGD zwdzm)?Ms%;cW`^({Wg)(&;BFza&G833K{0-7W60tN;sQ)SXe7uOQ_0Vx4)&B5RW7L zqo1?sDxyt$Q{oq}zTF*ksPF+QyHs4El{j)UMWoVoA|hkEE57e;;OoRyzDdc)QpkR- zDaY$-#E9G3iWR&_7M_#2qtnJ+{V^MZ@-{rgZc0t-TI*M>Cl+?mNAk|k0)Fz7yY}Aa zT-``+E&JG5u*itR^N()R#GR~#ZJ1`fai}E0(u=88+5HS1iUMetB*B3Zb6Q_XkyI3^ z)npPE8LiQU$oJR}#%qvAEyCX;9AkU+5~4y3ygZ)&YJDYh_YgT20gozf^K|v2u$hX% zOBOu(^tVnV`xL!XDIpW#21&a_e+`^wtG#OA*n}$aPVlGwfKXlWC6RN91ObC% zpVY}B@we4~Yo#U&RHH9WwBxuKXAe&*wl#?M%qH+TFvRxC?^c2x7b5h1x-gYS0zyp@ zoT`4$PG-Xf5bYS`POJ7e@SERkU@hdvEyi+XrJy{yG3opMnUlQAWzVDkCZ0<_yzG#w zAN(#BDh`?_()S||%4=(zK)=dN%l$<^wj5-eqFYsqG^7Ex6d5sbM1}4N+SeO7A!nbF z+nwNrpqxmEPW#ClR zTTsHjhm4+?SJxXFtRC;#?lBJkqo<<@FeW%dqsWNr%4uNW2vbJxX&2Q?5n%LCVB8yP zcWUq}@-!TUZ2F~%HF_s;94d^y08289<#`IYV zdRc$kc+IUPT5+s2bZLhx8%K7c0fAU3kE49MjA+^zKAb4g6g=2gT(~=h^UA~zYwOB} z?^|cUbrEc_e#yHZ7@s`p9yfjxe{F5NXcz$AS7eZD%6JUCE?cb3gPvj+9Mp*{*drwb z;A2Nnqv$qURT-0<@qrzoSM8_2F-Rd12vT2!qknvIYI0xa;EwZrLQykg+aVkJB@umB znbnew@fOWWi^v_StC7rt{i9?2ijlb+vy0O)^Sv9VDm-h(KYpp5kRyJ@$lK0@`%hzK zPkYsLc(cb0I|v2d-4e3UMMS9cTf~#s&zDn@2tj?2tu`7KK+LG0kM|}6MR>+4{Cj^I;HQJ*nK#2_4Goim5*$`N}76#qT4Zi{BCbxBA`L=RWNl||2s}LqPGBh zz}yj?Xpm~_Uz824$#?OTrCfvU4L2tb5eq781gQO%8?9qEA0Q1NgHtmOojf@8|g6vg+W?#o=YbMdB)$NkHA zWGy??-+FN$$*$3uw4F7Pb7um*yiTB!wd@z>s-0!aw{zl>A75bwW-7WlOFxiPQ6bs5 zlm4}GiJy}4@{y;k*ZI?k87V5xXZ?C^cYG8p zOC$fryzaDF0RaW_02V_^R^H4vAKr`%tY-2Nx%IxZbU_ zuy2d4xhmI+^}4L7X)AD%>|#T!&^zVOS0BYRU_Mp zWbm4Q>rw`ae-$_QC1&zo4Q62{69)EU#Y*+4<8Bsi`(6acZUqiFmcheQNe!k`DfSl& zHzl~^=luNVF1AZs47f28*8)rqe)e}w2=0;a4=N2DEuwPRuc%2dzO5^njFn9qrT#(n ztLv!+O+U+Y@uRYs+4l?VG9(`#wIAVg*)X$J(k#C zxa~rGL0f4&WYBBl*EH5O)zH#dFxMGRN=Q_3RG8? z4c=Yv2jt;r0ysD@qn|Rx=P@+e*xQjWmRQQ+EAVJ~;4{PvMGY<+Gd49nBi*w;6!z`T z)ULxtlY!55LRkbMrcPckOwC){X6n_)INNAPCjF3!}3j?0X} zyRKzc3q>vjjQzGw_*Bd4IfQ=xVM&uIR%?7q2Mjj0{wj+S92DKj(^{zN{yc5yWxLs2 zDNZ^<3nL2~34`de(a-Q}D3%D_AcVHN=LPOo>HE+C_}H)IZyu|Ml{A*ZhlWm^j|_F= z`7|vfgeNIPs@A8LqVmDoX7$_CK8j4}EKe*IL+BF1a>W@tM=wybm$f&0;zEeH;s=ItvAK#!4zlDuD`2e< zmhw~2DJJmb^>ULVh83q78^QGN&4zXg5u!&7NZ)QfK?Gb@+{RKbJ;=MT`M4h|URzr( zqh}1yE*011d9;VvOvR-GwMk zUsxumiN=Aev_^}Qp$Doj=%H4Ll8cJNZUX&>wo5}lQg#X{X-7ie&J0p{zuT7dVTzI; z=XU5ZKKU*$nfE8Q-k)5s*DLX**G^0veI^QK=?FaQM5F-;)M|}e z$Y+Oe%q?RWEUYqZ)5xbAmS@&zre@foUJ}vVJGzqZ=yEa_>l-Y=4I@B+PH#CLRJ1^=?n8S<=KYD!@7pDwb>MxPE?FfuHk|g_*KnW zS%EnFU=18OZhv($x)RI&oTtx@WdZml7C&8Ie@{60>d(T=a`OD1E))q@)rtNlXu$uI zkl=9uYr3E0nnTNQl&+@iu@JS20#z*AS!;=r-CHRbbcAlWLum3n{m%N5l%jYyTj(rF zE!UGbyPN5P{jY@k2c^a8tqg^J1b(D64DUmQ87lj1QSgP%H0s9$n;2vv`L^3tBml|N>Eq7HID9B%9OR9pIv6sDMnm7&DstK!He z+lD$gl6CU&?uuD_-Be_(kCeC=Z+=AeSl9-3B9(smqn0~h|7FXjcalBHS@Y;`JCaqR zp`8?HZK>6pm4Ya4pXQt@>IBlT&VI+eg5WB(Vjzg!&gZ@QH81xibKEz&ffw)hK?S_v zF@74Nq`mEX4-P1MyIA>n*Eqv!shuX`IwJF?ZsC~4GH~nl89BqwSDHC)Xr2#A%i{ET zR7k5N84^BB8M+>tr|THaI^$H7dRjhX&(04!#~n*&cY?oLW4jF1g`V%up6z8V?vy~T zK)N;7e>j*@!jzYEv|_GzX??!K5bxm(&g|QBy6Vp3q)ds}DhFWNefbdOHLE=|5KN)j zS1rF45j<(zs5he#QQ980!GXlhZ`al{9$9DWOtZJKPvGr%oyd=2jaJze+16krUQ^xA zUMLm4Uhb#mC@dXA-uh*o|1`}vqu-f2Jpd;3Ec35<3lc2#vE`G!Cy{6}|7z%GITgE; z;c>nvV<+Tfw{8>4Gb)!w=CF?q1hAbhsc*>h=Y z|6+Z$qE56+>7bCW%62B?l=dZl+?j?_$HcU`js##PESR6JEN8aUR%hDMoYpDR^W3E_ z`lq)jE3~qqMqEF-^`&h>a>`JRzSCJe>{JOMCYt(y^C0>rPsZtT-Ns8kxU_o=d@fPImd$1+~YLiCD=_A~jw+9`GPP!@MfA^r3T<0R+TU)G#63>t*mv3%1O+Fj2fL&ps zas=n-S$#9;;VT7m&IWuJj-Nm49Q1@5?#um+Yk$KeDf1_DWUwNbgJL31EO#vYRM$sF zv+?K)Q&h6LPQ0cgdZ%rRWPF~11r1)>uD2j&f1f$3){W9gQ10BP8pD7O$p_VX-CptU z1JE;14to_C(4g6T?x?@eV8?$X3!}yS6~aAv^^*eeox^Qs)XDP8g6LO1Y#{d+^(4M_ zJAmX*3`|GmVuutOC!r6Qa$>k4RJC}lGDxeZ^F^>cjEqQQg&~NDe&U`J#V0UxP9_?U z7CWo^!nV=jKRmfhK5qTPWKPi6MVfbpIs2_E{jHJyv~Ja~WNaOt;*4fpj|koCLHWkr zFSZ-FI>)48dRlQDl6_|sza~)P;=bn>C$`j`Gv~gK%+l^g`^;F`7ZO&NUG-6x&IFGq zLuNy4O9$j@Y`7?do)EgMxDg!a2HSOslsAk1BiMiQYsScwlB1s7zhQ=YZccpkQiuxy zXM-wQ__Q{maH7L6R2UkXKWtbzvXZ&&TkKc9~tJ*YP!3J2yvY z=6hGRA2RDBQV6$hzqq076I(9BS%O(|A0A7hD9u0Bk5Wve?f;2hQZDl(19ygKU zj++zV<*kGVr^`Z|&Cm8ei(n6ZY7R!d8A!SRMdy`_T+Et0eXNswwK(*LIOVc9HD@aXvveqdrEt{3dJ@@`$c z7WTZ@X^@mVi$%hCDyhWr`OHCgmzf&vw|h!!wQyF#>bvfW4IkB`AB<nh}*cih33}7)evCBz`3*c-uOtxDGTs7cp*4C zqW>rsQ-bQ;(phkEg$2%!{aM0fI0B8u?bdhdPX6c?lJL^!!8wGDZqcH{NG|xAsagbb z5Y7coYi)6!lB}#2SrZG2f556^33%PpFQLDoh*&jl?cer0Y#o{$ZW(L4Gjn83dULW7 z_s>YeWislmxjdzwvjEO}NEs(#Rg{fyJfvy!^ywI5)qXFXtcVl|Bofc7Y+ADHtgk=< z%cro1b|*$TEz;XnRP+nsBRHCBK3Po!YvU@M<>kU<7u{5m|Q&MuNkkpF|ntL z#MY@QN&)* z+MN+8T}eG+vQ?8?4EI+@QV4ue!Rq}@wsnZTo>hb;Ryo!JTu=tTQA$^W@I5@1!x2~l zHOJQf{vi`(`zy^w=-0F7FKWf)N&;8lJD->8uYg6UAspV>L&4^kry3GQ@pN-a6|{4! zXkf>_4&bqQNiU-gz0cq2{_^QKuMA?yOlqXI6~~suR7G`v(ZH3a+o&acE@CS6+b7u0 zXVsTpRYjODMOqj^Wd4(;l;ZgDfjFp+YT0M4SDGFO3+c-y9j~Qb=g{8Y=44c7deof_ zwC;VmdYSSLQHAf|zhOlELr7?^t8@BvcoLxB^QG(CODVIhz%(RETHdFcm*X{td)Vz& zcwrV_vicrZBs_R_-ty<>HYS{H?TJiTx&rTIgwWosNWR%&#!!+b6l7JOt~hcQ`?%WeP=t z^5-v6b0bKkAF#-~^pSg7rVg-LN5}lWZEq1Yx82c=ZK#$*)loy8S{WGn00~%qsAb9` znnS_YUHL_#PNKdsoq5cmwv#79MF1O890K{!EEo8zz$&jU4Prh~{qI1I0`&h=bLtu8 zIzg%ru1mQ^te)H=zDloG8oXYRAwk5#4kO0nfD5!I7zv*01!UA!IO`608#3V*txkVu zLkhL~T4I3u@kWCqrHR0gq1feBjZbV5tPXXPLcW-+W|h#QK1=+HzV|!qo|?&bB$x2G zYS!%pk(>Jt812G5kpMRSu5~lXCWn11_3vZZRl(5eGPLi$x($^u;6-#Qc-o7szFqtv zh*4cH)P_E_{ek|&-4`0sOoB!63=g?L9pt_^O6D+wsQes~@>@ZMZGyBW*rsP6DLLa_ z;UY1K2&2<92xwSc2u#Q^E2G#an;4cHEq>Mo>;_JwnT9GW>t(!))?yI~e#!Cd&)+F# zL#cZBxZQE>4BTKqOGW*>GR+Pw;-D1c-%}JoGDy<91+%U6y+++UZ$Eo*@+6_eFC+}3 zycW*5&|Ab4AVS@A;tK;B6T@A_B_QWc>limfep`&YfPsOr&(*`pMQy2ptZH)bQ?4(de8l+DAz_^8Ox6Z+-_#Q`d*mB0_x^q*K(TzWs$m!MuK6$) zPuM{Ch!iyPm0zs)8r+Bx8AanbT(`R&Uj&2nfDR#N+ws*xi?fvPI?7h5942BYPu$w)Gi36HvH8_D$qGWzx*uKYdbBy()!n-+x8z(W$+|_D zqDmuiUs#WM3-MI_!ojN)r}$l3vXKxzyr?%Ua(nDVW5#7H&)4x2S<`D71@I5nUuY^b zcX$#>mz}TmAf1QpB3(CW36%XV0oQ7eI9==t@Y2~hmq7XoP|^KxGbhK8G%8Wx zVEQ1z5=xZT6lkg|$Ww1ke_tm-A7IY`YlT-kjFRRXS*|;cZY&FAC6iftIzY{soXKXQ zD^dK28h%ZDj&5i(*$?Nl3RbuH&F9_M2O!`89TyRr?k*}xw-}rLn{c|QSWFf*?7EZN z!WSn!hfV57=mASCq)r76G?>xyBAwSVW|(-ApiWA*mA*yRXkwM#BuLt|NdG~%ati0* zBX2z4R?7^HL22+I9WF7~!PDw9b|^pI(_0sm*Otzu1k(qOHIqTyQg2t#B+30Y1Zs-^ z@{m0C}ZCs zhLDrYaFt00G_^myhUx4=8Qt8NN?sZbMlcviPyH)d+9uvtbUu#cPEbqJtG0dY6kill zvq^hVl7QPOVUG)d^^e^*m=}18fEnv1yApfh%WIhKiGHf%7As)$1mv1Z?8%AJ;<9d7 z+@3pi^sB1C8om3RhsxCo4~{ZP@-&5kkT9Cib@~8yr^YZF1VRXBKAz`M(-&dfg~$+hN+WZ5|TdNtyPmgMJ&Si>K60a<_tJMAGQ?ERc5Bq;=(U zFQv_2YU)*h@YIYa`Ck2Up(Ef!f1xHC+D>8KmVfuZG-M)g$%vto!jW|%97=WK*3hOllqxDu#koLW~_tUahB2z%wtgDOP(prSND_GCVB zpM?C0ogji}(~p$wev@|f?khPZo^4sn???s-bwUu82NgrYiBJ0%FKS?3AFlqpXDgxB z-J4Fwc(qngYfY4z%_v^ynY_b+un`hzQSGDmKlnN-cHQ+Aa{>iNG_RKmlGW1$-%#0s zBA~c`GjOJkTB+xXpIfu>i6)(px3Uc;ony9C(w%5_{q|J%yZKXFy{NH7ORiPlZYFZ% z=GwPiEZHE(1&kjO1fb77B{A@S2mkBOxt{ze(s82K5tD8i&C*6~SFFM=wrvJx?V+=b zN?4}iAEuk;ZPi<`V!0bJiVt$NHCj3oZ?Tmq;(knZmLI-_mE$l+aF=*txdy=BP zB)M@gCGR(6(;Vs$I-lYx&$_>@_?wCxwGaEY-uXzAoI#4(zK_wTg$zjENLmR2Rm+X% zGi(2FYx<#;zc1XGwT9A_QaL zwC(nR+mKhl;XbJ4qGUm;oban{a|2WSUtZP@XqBO?@uj#@TeCb=Xm&E5hGT7^{ep?@ z(&yhM4S_Mk;q*zXi%Y(ger)|QutJDT&=|J$-#+nWNGQY^#x*7DA%BE_`($cEThWU> zs2paS+g_nFjBzhs{p&zk$nU2_b)Hj}dduEX=grbrQg9K9!5I&vzAIm@c7d@6=ubt2*t!0IKF(Qn%r;!khEVwkzZUz zT5XxP{Kf!k2U2?|Zxw4kVG%}CmwqwAsuh|c4?6ZQTu~@L=5nIbF%UqDi~@M(T0$p) zfj7O--dn4`S+}0DRJM4;6e7RXP9+XMvLZ)ABqRNM?KjYi*CF9cBs5z zrf`BJpi7(Qg)+m>GN9Y#e`IF`k`MQK@^6Uy(&5i+H^-HfgxU3Lw66h_@tmW8qdVb& zi`y1Vx2meKVofQxF=uP}Ipam@^7TabOTKUtqG7M_iyE>aIaTf$oqqGrK{v&OtZ<#X zDp7mgj;$r!U4l1-(F!J?Xq_MGZRFwS=yIzC^$C7H2DN>B-zQZXLI8}D-WQw}NUmo_ z|GyVNIBtK9g`~`q7(g&vheU5K22%GP~{`Uc5D90lg+rgEgBRe`V}q#b}jr&j8rC7j_6> zCm`D|OTBF#W_mNA?Ij_17I0?KiW9N*jtnF{&$9Ajh16)LNP3(n5?>#No?jq@($_Gt zebB#G#~p$;AaPVUyenD0sSX6wQuEVDnEVJqzPO0J;WDZAYAcdjwu8AVX*03=r!hK@ z%z8breytU2bOS?=f+xUu-bEF+^ZU&geLb9PcBdBLM)|cXe(^T9q5edwW0#`)La6)Z zdI=iMKxel=#j3x4#@?M$1VWpgj&#DKed>`9uf{}6?>-jLyyUE=>a;<-f z|GTujK8YdJ`Bmw101_A1=Bj3)K%-`F&SlR06Iz#5fp(H_56zJ4MQT~|ovhDu`Ikhu zzD+26XN&~=XDvsjN43n$Qfr=6K|R1FONg}$|JK&7s)uV-^$*y((Khs$K8-W0H!5;uu)AdUf}++m9J2I7tJ% zuOBM})5#MdOe={x(02OXaD@Y_^xCTcPlAYI9H1tMkW22^%lGWdt|o1Ivj@m<8= zKgWU>rVW)w6Uh#S%lGFq*!z6%BU&Si$M`^A$WUA9gv{82jn#Ak0}P`f@^YKQH*FYu1rdOob#5E{PE zzt0tZ`sw=lIf@(-ZjlKysHyl7k4Ib=39uKpLu=Z$e;?(9{AOFBmiDSXWln}EQmcnX z3I${El`$(P8P1!uP!gLQ z_%*`=v~XVaV^l%rwA%#;p{g4lRx5Bp|pM`XQ? zKCp!J0ftM_QZKynTU8@$>B`nnKs3u7E0+?-u&QRBc2*U^qo&4$?B1ymb(Ro?p};_VMAhZ}8D zypWHLeY;O(~8aZ4JTT#@T-NdS9AzUmI?#}OUIF}^O%$D$d6&9PG*7$7wf&i9QZ>b)zYc#B@AL zaLbXi{0hnBvP*^eqr);gKM4w3?!y~+Etr$>}!Z&0x^MCF%V}~ zz`oM^M_kFsA8kZcq5U1nFCRAID;0*YhCbWV6Cvbx3e;qO_9&Ax4*nBSM7J?-LFObB z94GPV6)e{ui(f028a_94iuC^beY!4iVq>j=F6YIckqdjqmqrQY*fEFQUsZhc_xC8q z%qoC=)W3p1OB)CVN0AnmcaHhi-celA976X;zXdPYQ}pwWv-Bkq8s7eQLoC;&`9>XP zyRE1m1eYc69;*QZ{d^R_yfCcEM+-Sa)ZHspcX{`j=BAxvRSQ{BSR5%qsQ+i`aSUWV z&8^U&V%Ufru3YQhvXD{t51KX9ntf+&yPEA{ZqilK5P%6?B673kY6u(axFSf%9!Y*; za!SI=7{c=^JuBcnotKng461k>M~Phsh@+k=JIu~9Wl}hbVoa_ye9)-3wA^Hmwuw#? zXo)f5brty#z>1{is@0XWQN6LV7Ch154a9~~34RazrbR;>s&(&dQ_%-=Jt71>0G-V8 zOZIGI_2&auHh;26CCaz=pC&NuiFmuUo%L$RUyaSZSXwj&ZF+GAyq%w`c=PQ1E)Xn5#fRHKjL6iaC=3mB43YWf( z8H-bobmo`;3n<>OoiyP{7IRjhAh3NWHweWfpIq-By)*^J13ttD4hsS963q; zbDj%oUshHl$0UZ`XCknp2e?%6aJW5I`@u}y#s$H-DT+J*$_O*<4Ytgw(I{uc%Gmrg@c~mdP75d0-$;PzWQd=X$bf5K{|=5`EHvw&WX&p- z$B2Q;&k?6k1krDD$(Kiw7QL(m<~YjsbZO&bdHhg*agFQoL^x)?_1`{6A=?jMcf)wG zUW_oM&l;{2YHa2ab5qS|i!HVgdhb~}_?YIdCKR}6p=!Hsc*oa=Ne>LO#u8g>u|*`Z>=LpPQinwDjg;2=i3mP>(HtcFIp z>)}%K7qc6AvLXtz^r`S{WpTJA@Ap4+0sE-6B!xu`j}jc;e29rg7jX|ciC(^(u`hV{ zdaE_NV`m0Mq_DtWoe69wZ60)8oR$OR(o#cf^IxAiEAOnw2+sVNJ75ZBn-sS`)A&Us zfuUFZJ=4a5??oXet!H&6g{?;3k(KQxH&|y93sNOX`=!)NEqB&?$_J`D8-aY5F#doNt?6m*nV4ue z=eoIQx7Sr`A)|!7HMKcEIxw*uInFWA0F#3qQu+3b5)haT8*RXtm|=d3mOoM)m= zXA1mazc!s;3^7L~yPQlpPnpRyK2fu`&X zyro{>q47$coHR(?-enA`D^mN%gNuxVKbXb8oiVr2**1^sF{SHBA`;~}i=Yy7yV!_R zb*1E#G2N1;(GtrKDW0a7fQBpiCtCx|0ia(*dCf~mG~l~yw4&2Es2w2Dm$PaXnDE_6 zElllV7Sc&`Drsi6TPht*vt?%rWoWL?(Z2FIPO%@+7j0)qb+8PN3IYYku$*Z2?G&~f zl#0(YG~hz}ABPT9so!Uizj6zFN}5IMglep8%8t4|(hB~TF*~Y zhHMFa0G0fKxz(-P)DHQ^@Mn9*rT8l%qU}Lj-5USwxxmpug*8@dKDhr&1ixxihvkO^ ztkA${J1Y|6dZ!~a9bG>RC9)oCUdS5~m_2)!S8r$j4hr+&#bjpNaGYp|>xZ{2jkH!GL$8fU(dsbd zh3zYuolYn~I+D&eocMIE7^JeDOuNtnw!hTDrHH%G7|0`X1^SA+2xTwvaiyfBINDBF zoHb>*9R1WCvl#mnJ{>5$XWMs$AG?q}O=9XdK$NS0t&JzNYDG=?nD@UgG--_L8O8U? za^NTCGMZQQA+X92aFu1L+BOs4opzOD7%KMYfI+CL3JaWft(#cWa4kbf(ymEY=Xj6t z-+!n!N$9S9<45BA!nv|75hu|L)|q8~<<8C`IKSR3_nWmh+L9TUJGI>8;vQ^fKKi?& zl|}tYuk&s!Z&)d>!R3f0=>p!D`M4#lVcRk9O(qLpzzS1_Tt6%l2hzX$<@W?`=ytc_ zh-MsnV~1y5G_Q1a=Kmd4eK>6$FklN_$eK26Q@FZoLqi9K07p%=R3<4W!Y#WHt<>;w zK46XUi;GiKH8?Zf^eAg1)QhL_4FBiInh30~uPD!Q28JR_ha|7JUOF!2Qr%;=1OH&1 zW#BItvJ*1Rou_MQ(soc5dfJKPedji5=fn8y_abThY7qWs*jQ`M$yGqrHW27wK0)rkjUfuDWe3SX}j5a)~wDNV6rL z?qz$d0LAffB?SmZ7`Bge=oqc=O0LLYUoNq31Iy=Mv}g3k`~SkLR~G=8&lipNH%C8| z_O$1xg~I3v`d4760YnU%##S+tYFI}LUtowfpU|_2Jf*EuoX>y_Hy;t=X8L!I7Hihg zTlS2>RYIpjE?0w4?|$rj#5_(+s5v;O6gYP;J16bZY=&P&hN{?o^D?-8PVl7gr0x+x z$Q|)*@Z`5O%avr$uYiRYI2r~L$(~j+vDUzDp(xcXFvJkmg_98|YbKgls#UMkYZx~K z94Tf4Cd6N$K2Hzk{yMeRXmt{80}c{$%$x1 zH{syJig@#Gk-Q7X|L}Kzj>fs=Lgy!S8l5P^)Ve{T_us_npYF!my`DXuiR}Wx=zo_X z-RSIV*99hue{Ntd84p_Z)wEXs!6#-8T@=Vl5kk+3U)p)C=2&)v!`q03z7x@}PRqXJ zcEYCJlMr%y-IP~p82a?nOa(j*9wscIP9&V`7LDc1r6l9$z&Hl{?L8qhJ(xg83@B$B zL4e%~Tx#~DVfqpK#;Fgv33fW2fSHSxN!`MVAL6PuH1`c^e%3R$FECQROe8#RBi)e7 zj!HBS*Q{Gb8}_wk_G!7!@$0`4+dsZjy>y;>RPa#{+j4x^56iw_9_&7?J|`!dTPgrQ zbQB8gK8E?kMleK)Tr3Qu{OUqFC$1~`42J+CLZrt^R1_=ZpJ;I)`YsU&Ule8o!e-%! z>7J4Xs6fbtQ>alfUB&N97)SL))nqCbkCDy0nd3ElEJMmSfZxnsq^^`ywk_e`-+5K^ z*-`IGy=hnVN%Ohe%{EJBLh(&{md51gViGXILR3ridvMOm=4VA~IX|^*lB|j0>}jbf zQhW@RM7a9NbT6J z6~s_LDAbh!KKK`0=?c8h?{H9`|1Mt}YSdM8XrhlIu~{gF&|FAUd5sf_NbT^Y%aW&| zb`?}Il_$6gMAatgbK4z(5l0ygR4|CSVO3$F7Y@9_aEIW0v(#{Ko=ykB>bU2p+Akr| zm}QnPc;~de_;5w&D0gOT9p<%`V(vgS0PC&3$I$UXT8{CTRws&FbJnyvn@dTU@(NhK z{?_Ot#f{i@kW&g;Tk{cK&XXs9Y5>iCa zM@B_ZdA)|+=4Gf58Bt6dqF(yt1P!zr2xf@;r-_s*Y}Ns^Bk%TV6L!tI7g+UgMHr_RnZ0xui5|fsf;M!p$o13D9Af<^t81q6U!kOW<)46s7oT5^-W&dbbq|BA|xT*rTZ!~7DX+N#u)RD!@f@X3m>FJa|!c=Su_KE`^0B8y~O zp%-3?(;*-Fp#nU>B1<= z4nK^BvYD9<53&k%Xc#AjynmpC_*A}3(&Rpv-)@=FDJLffK<@=wCH#C4s=H`9-ol3y zN@a`$Dd}a7Ze#zbO{KIAropZeMasq***5{EX?FROr7!5-43{z+R!mR)3&hNxDP>K# zm8lsvjsjaJ?&m{e8ReS&$|7exPpse}-@k^D(tDf9kuOG%X!HMw@GO;2QKd53Ng0;S z5{m_wU-2CLT(lJp)(_T9M^9y@v2OVAIaMRgS#Q4p0?K$Yu)w{E!#YbJFNSWZ*D(gv z?nT*?pWkj)s$xYQ2|~^HkF=2MIjd(=CJcthU)f&w2Rj96T}7|jZ}+|`#;rwzZMZ`~9 zj15=tnsbMtl>Ec3MPWpE9|=zkK2&`Q;QfEmEV)MoSi}eJGW-~q;NYDVdi6t<1fA}l zx`Ib4V}Q)5A;;>PbENDF0C$R43WYg9f>7)ED9MT^9FzVaFT~~ zbf@XTrzgrjwG$GZ(e+RiCu>f7TeZjFaq%`r{n}fxaJ)xHLS)3oLi2LL8STf*XESFl zln@Xts^-kW_DwW<0H=^L0c+f5YBNBw0&i47OWT3uG{Q_WYu&Wks)sjene@Tl=fv2VE-X3+K2Q;S8MMgAw%q zkEX8-tMdDrKBPz^-JR0i2oi#HgGft*ba#hzC?VaQ(%mf`0@9t*{cL{k|NW|$=kna= z-fPdAnKf&8?5E|${BO?}u@*|{hD0eLT%#$%gr$4b3%7~(&It0&zP})jz6CR!j9x|) zj1BYG9CqVuCJ*Ab?4uacB#O~duB-Bf&v}V@8gvuX?pf9=&lJwAD$LbxeEAB&48tNK zfZ}Pk+GSRTV!=&h$o{3eznsx5R{^I0QOa*FO=oCvXeQP+-hMiWF>&Ar1K$dTFXdR1 zugApa8*~}?+Bkx=nG3T?_gZgNmP@}ZCDDK?j8%#$_FHjhRu-qVY(L(H>}`JjrjBDl z&8urGFZ6=`6;WOc|KX+3GUDbM?;WlYS!05~-Ww&MRALZ>Z~T~Go_)Ot&t|{bdT@vE z3dL|l1Qw-2qQc`*4BGXKTUu|ofP2_~?+MgnG??6X8c)EL2W0V`<%^SQtyA07X5*?G zTgjdc+zNfVbh^T^O9GUe$xAOMohs#Ehgdw++f9k3;xHI_!dVuh_<|(Y&W(Nt61^4e z68VVna`S+s5@w95K&qFKxB@W@MMx?m&C<;72z@L^QqMcp%JTN3)y~Cv10&Y`gaT66 zl#I>z9ns$)Uw%ds47$g@{i;9z2hI1TBRM>5Q<@0Rev{kFna+0>poO+?`9DikF_zjF z)_u~hW(UTS;zT*?KNEX8InH=oL3CeEBLnn$#BCYBE@!fJSX=kzcs##FUYxW?KnxGq z$>`48b7%w`*lj+$(9UvOGr9^wq55pUipF`gWu7efC=WgGvB@YqG(*-EvDiu~zyKWR z%0}@^V?Zzz(hdFUmd{rPP*K1B=N@z-Cbh)$SYS>AdKe|WH0wXDx@(&p_C${z!RX_u zH9Ayxn9~9dvsrVy?|;Is2#ymVzSms*tAK%XCi@mhl{IeGQO4{sL%sCI7Yx(uvpSbi z-o>zluDL>I?AfTO4z^3~vE{u-gLaj9i8AQ>m;6Q<4Tf<|mjOr$B`P9*wDzOI`^!~E zr-8JmS!HMpE85!fz_0T1e$Yxq8w#>Qmt}T0$YFK;r}TV)bytIMv$ix06541+xh zxaKId{xFPKWU5YjQDAlMDRN#r@KUa$_@D=p(YmV11NTP#(V0H1LZsZ5qu}EnGPA_S zP4}^S@1M&Vlhm1S)?aF?RRYdqHFd$z3GmOK1m~zdKdZorJ%vO6r7bja`vjj8o|U;- z;=0cQ21^JU*{3qTgTZZf&M1s$GVuRo5U=yB^+#=Pw)A;&W(KM#nD>kZgCt7KamX(o zJYd=UdH$t-w+uoKVLHiZEINf9`<5|K)E$w`%k05SMi~Y?cN(*nP(y!$XDHitkzsXV zayQ`m*_9>LAKUPNH*ewcTSA|)S*bpUfPDj^X>x53{zmp(Sc>=bC>T%q>jv~G=*G5((!P=#| z>xGK^R=8vdVEhp|dX@7pSzF)1nn7zp<~|W=+3{lA`nr%94pbA8=eyJRYiP$WG)+$7 zBHK*fjM|!yhN>j}!QQDa<1ogjmrLz#^1h-_qOGFi)LH_+l%BCAtQIZmCWXK`syTV0 z_4d3FIR#-COgD{;Jb=x`X_fm`l2>m){B3bEyc^PC*ZVWhwVYLfI*>^F)Dww#>9KFH z1~Ph|w9kgGkG&Z%Z^85kCSabWG?4CO`xbDNp<%{zhBKuC)B}!w&6qP~$mE}Hb+Um% ztIwX?1(4sfu%I7i)n5mWnb@+DCXVCnA&V`STH8abi%hCXUyaPaoK-M=}iBWvK8aWmNUCmiD$8%(lYcrdS;o;>K!yg30X`aH5T zr`D$|qMT=t>P!Za78g}b#n#(I2vPSC5U#v@qW)Q;=@J0!OT$F5{aO!gb>GKX9NXaH zkF7i?+#HTmg3&!&TJg8}hB^hIz~nk$_G>@WGWD+^5zemq%}QGRBA76mHhN)f_H6>} z62%kJ&mW!-TU~w-?j&yCd#erbIgW)TTbYDY(8F)N8%#20(B9yzxf&^NwTwO)8yji8 zp5Pc?@j4dd88w@<$nKBJVH~dh0{1b2PC20`jbq_3EtZ49^E%puhcNQDS*9=a@5>Dl zaco5=bb`Wbft{BA$ig4Ik`d51mzwtQb!qgf=8frJrmmLvk$&r0Wo+q`f5F3>@{~V} zSXyfVnVH<#+`Xai3M3Rei=Qs+Dm0+W>&I3T`g!F!|eXF?^i0X)nJmQ zZ?T4drTueDO}kB#EibvEOl>dIWafN@g>;f{vnG(~n}={7LN5dDpp@vD+jzh9A3pM^ zjn<5O*T4%iHGaXSEBaaur>wEX&|k&!hdS=0ZNDD>D6%1OsFc=o8+^Qv3M_4uFY9l8 zODdPR_q5rIt2e^?oi9T54IlFF)|z@pJja_FYNiGv1eq?@LuEsE;n($tY)O|8V zM2zI&IiyZ~PA9jL?;9BFa6cxEFNY(=!oVEpa%T6XqWwwFKWN@>e@wrKy!LG-`bCBN z6*9k7dT57`=%0e_SyD$*5iPrJs9#KM&^YKzdr)%D9uyHqA%7oW+v_%MF{5e9#>B6} zEi;$_ee>>^7YhrkS_<}Y$_;*4m52h{)@YqUkQ^5*!sajeF7`8Lsv$+q=#fkzJ3yIp0e&Br(ZM0j3Bea6;6+_OBd!p^K9QqO(%DFx8j4A@LV~H<;!@z|N73 z&tbZxg7wc$I&2)dM-itNO54{~>t~HiA*u>|hw5gjRAt*6?;$l4s5(7Bp$B!>SkTyQ z14Z63s)!|+_q!TdJsBAe|KLl8ioK^^9Wf*MjqPMWC|y@J*k&53!nVplS;~Ojwjx+} z3QzXc?l9cpCZx@v!IX)U*!K1`r0kNlGO;Q&2^-dhbh**yPf|cZL`_R+W@Zeo&*cc( z31pxvWFU!+jXAu2tPNgc_iAJ--YdiCWYLRn{0;X3qpR)Z28UPYt&Z(mtccNsO}xsX;r461MdU)F`Mlzuthg})3t z5&s-FGsA-bdKEPl&Sjo)m5#}*&fh6&mj-fNRBfP;h@vFQsQt-b%mTUv!u39LnEWHt z%-=sOQnZ+`JP>3FBUg{5NR}CmkM>d3e(XNbt4Q`C;PkMHAd~wryCC;&o1M_U_9uk+ zvx%VU{fQ2l6^xy$I>-29M~!RgM66 z8l+M#u2SZk6AotACB+K93prJ&BBp;C@aq;k54=&3#j5g|1j(hWs)71ty`jxSw=9qw zMBW?^?jWos8tl}o8{|xcV@@4}KwCCE_>TxpqkxUgb9p#KkvfZreU03|P6km=j&v<< zYuY`+ht4xEK+`GxT?C7t<$7^57HP>%ENCZxtOyRsQyYF#JI9l11qYo7pYe{Ap{aqh3LZ6h+CHgKRC{HNZc_xXo+4FiX-LGX(IZaLtE`` zqJlBUU%pI=Q}@T;E5ka2&pSZ5_qqz8d;smuNXRwg%YP?Fqs zRBCJ(biL1qgra(zSNF5HVTP;(-QNi<&-tCnIhK13uRLvn4qdH{p)=ebIO;|0?oZ#< z!Jw)Bp%w@U**LR*W;LwWIi&YJ_d|zn@ja;pSFAv6uGXz??nid<+zSPWr`GX1@Lbr* zCPlg_9#SaG)9s5#OtP{vT~8iT0R=Z=bfy2X z|1$_3X0?b+{JSn1qeiHwu6K$|IrgbQ7dbmS6pcpcX3kHkg`3^aFVyksk&(QzM6LR@ z4TSdyjRxV^T>j2~cYLE!5*CAvEhkG?i?u%E6FJA+`&igcq0tkXC3-Jp`>oJ95y}SB zDcrF92SMC7N$92Q1y^r&bxXaTuoS%9cNTLOa1ap@^E#iew>0*l4&wz-`OGS`8br74P5~*=$B$2OwMcn z`>QLACA{`H1v9rSLsixT#<(Y91z1VD-Njd6v0*Cjj1N`CoSY1TMBnYwlreSF>tPc3 z&7YarIIs_D<76u&E*qX?f#ZVS50|5&X_p%EEIo<@w3kI*jS)6JP;%4ZVR9JDNb44e zQf~VDXty#cUX3w>`0a}2x5=*A<%lQ_eKAaI`)8Sf3y{gePQBN9wS}rTHd2^imA9>fpaqu& zBNsl-0(v^1;=i(J=aVN=4^*O<$2n@7;5J$TyuB`~fb|P!x|-a_}w>iLK-lYF8B*NIsE| z9!)snv3T2!pqL9S-1v*sQT}NT_iS}!mCee${bT+B1X}0m%2IFK!in-gK?sUZR`d(z zvJgE{pC5hwW*Bb>zx6H4o3B;LpsoeP#AqVw<|r9yk!)*t<5x!pk!1vhnA7>z_kZTy z{pXj1#UI@HIOBZitlsyn2dum%I6DsXFu|JRbPw)CeBIx;Y|gX65zS(*WL2{4ZxJbo zi_S={X7zGi>wT>S~8BCd2$=^80tcjlW97x2nzZmbwe5PrGbP z4lD#7akml=AIyQb7)RxZj$;ADGRAmegu*|s)%Nv+gW zyv=GMf{2|hl{lv!mR0T@ff&2jf9e>BlV-}tcxvN1aL*{Z@{U1rKMFQqia6bN#<-B& zY(6p8`8erYsyk$@W|`yyYkjSUklEnC$$4r?p|*v^7!B@UZ)B&Zkz;#)KDc1o9A;ej zH&ct}WQXcSH`?~3F5T-K^G;g`&MC&n%y3sTwoU5L?zLE;bg%w7ifkA*kSJ3Rz-h&a zo>N;J?Bz}`nZ`IHZhWt(sQ4ie+K0*o8L@t0!U^q{)3In>BPvKaC?TBPsB#+rkm5I6 z?9}jeOLtebKAxUIGE!)mB#^IvVKZ-JYvTN-WrwWc(__6q-Reb0Rf5+Ml0?a*s2bD^ z)S93;&wEX<9(XX28wK19Xcca6w4L0qukFRU^D9!Oi;dIGaZ36wrb_$b(07R#km>-RrLPtOJM(4{4r z;TSRtK80WZFdS+Xzz)$7UNR{8#-0aWh?L5aTqy-!#9(wse8=CLtiTEJjWMGCpqNUe z+&>V#RHWLg`?Cv?u-k|K?l|9e_hTsm(OxPCv}c(lO`@?7ameG=HI$}kG|HG zsTwG%f{zWE0X0HxrVNGY#|C*<*T`)> zj5HimDm(297kXUwN?vL zh@y4*D4q9oDFIVd6on)$+Mc9g?+u-}(m-?jpF*z0*4;7MDIvmE?WWmIWux(bA*WBh zfAufa`S{-BSy?RyUlo@J-lMqPoj&E&qwg4TTsP-<(av&O58UZcwvivUUwjJOP}vTL zkHm0c@!=i3!04Fw@w^N=SRir9%D7N~5@hqD>_B?C?!-+abN-zPJ~`>b`Yg^s8{trw zKE~pC3vnm^CLqNTZ(-*R7dfzyqa$uF7>WW;cw}IvEt(JC-C*V<%6okhouCN$4o&{8 zm#^@3r*aMn7o59-)&2v=lZBXK$&5Z@(&3xGg`bu(^7eGEVVGG0KlyxPa%XB=0f!1Y z#=iyqcYpNZp-ub7>O!i0e|Bc&kJ|$;5i9Zz+|8)>qWoQFWGe#CG&KGy3v6NtfV_&! zb!kkqODR@qs{VtFDvdmYm^^bSDTsG*A&Tw>#(Oyh77_pH_TA#S#)imH1T@NsS8%UZ z)hTpiI+MRa>ozZyFGdYJXY;h(tLFd^RGeYGCLN}*jytnYhv&LdTD%cqrTMfZ&?s<& zyv1crPO$aXlGV(Hwu-Kr5Sx3{e_xh9>y^o0;RCdMEJp*;p4)fMCEPpEoe4DqV*a6) z^nC>QnmC^&TPYf9ausPTDDuS@!DgZNv3TxaW>{peGl=o;br413sYmH-@GSW`Dttapk2hz6H&&3CRu_A=Ha=;7CK*Q{wNGFWtuU6%4>Xo`0m=p_ zaDJv>`fa@qVvEY=_oxqjyho%ufgRb2%=9FK0)ik zRKU7OfHr*~??H^w`d<9iCuq=D#L5!f!%&ynD6?9!H_o3ZQ!d#F*#<`JzV6@V&WXi_ zC!d$IqCBFR9-pX}E@NXEuWw1|ar>@bZ~gBr2%Z|5Z{u!jkZ=K2RZsI8nZG!x%f>dl zcfzmL@;a+`f_d;P5^liJL5xTUQzPE-1KGY*#X<1q4ovP_HWn_ryaqvc5>lNzCRDIE z4+ejG`lDUBX8;lEK zJpNaV7=YPOd%y0ve~{N3IHelkp>fPKP-Xi4UZ&UBmWV>m>+>d}9MvVpM^WB%cPe#0 zFhRQ#q?h&At2yUre_q1M;!iLN(Xy`ObZjNM}B@pTF{txU~EngmnFCG}jRO%m?U z=g}GC%wFCRaDVVrRv-7CT?j7bjk#!-cjTMl%I*#&u76&MYw*E$U|y=h?NMLa3$CP6 zHxxADA%ktvPQNPB=o5CwHWe$zj9RpYHrR3v`??YtK2DDK)fcJR4slvG$ADcOXVi}3p@hM z_T_R#;fbU}QX)22l6z_4iTq+)t~2$1S-k`gwWeYc;Xql&t`LMn$Zwo`RzF!f8p)3p z!FR@la#jmheZQ)rjlhzL2842F86eE2$Q820RLw-%Qd!fxDe#6nB@ITMUoYSX%`fp?fo=6LwxT9KqAC!%^RFXs3f1c-9(4 zGd~@%RU@fE+-&){%&!*gxBU&!jfvDlmas?VBOY05M@)U-z< zD3xp2Yl2b?pDmVmoMBXGKzqOEVNQ~s1gB@9EZ>?@$cO4n@Ixlisy3yHO`^|(oRMoE zQ!-H6@B4<`60UFb#zgL%Va^P)7rfMEV@>BzNN#$9AYeHGbn(M8bvr>AUb)(db{78mBjm=o^~|KS+Ma8P6uBodT^E3)laG{ z532mPxLB~Ps5>%2KyG#_IWpM#*&Vc|!qM6R`|fAmYZN$lmTv4Hd$UE88bW{`LCE&C z-1yFlj~Ae1*#)+Wuv(l?#Y0wE)jJJF9^IpSGiyxv_;(PFv`z_h?cRYS9#KkDcCbYP%Tvieg+e&~(=C3X51DiZV0KNQ9A{_KluajlJV`(-UM+Hfa{vi}3Sq zotvd6q2Mk$Jx!riv^1x4E=1Zo|Jrt?T1~znxT*e8I{EsYnRLW)28sez@_Q6Xqnr7y zZl08b(|}I4hIN%Ml%UIK3*L{z!S{-#dusHd>SXiInF-t>u$5~X|^^>b4vfv`x z?w^JN%boCgm#SfRY0dgmV)XjRY8Y%Mifk)9 zsoo=T`r?Hee)eYwA81MWB5c+^qi?g=yIWzL+ItRp8|ho9&UbU6KA4+w+~u&@Qb?5O zBB7`>;YQXo$N!I>6g{zu2>oEDWPg<9$h`+69pY$CmA)A&+!WZ{<_FQ&xpj@w* zzpu|Op}cL9k55;Ch=t{cKe#@8Kit107GPISfl|C|6!-i>gFR1tVIx5NHyax5sjq0|La`&n~%ieIf0tYhC* zlz*fDp~Q^Lm3pVWxj5eoo(zOdIQ;RuPlPGA4~+QwtbEaKp)P2k1%MS*k&Qt$^`Ha& z<XyAVM-byWE;gO3S<=%*yq z1AC4)k)1#LKHplA{m^whPh|62O3OlPk7-yZdUDfuG=T~M?04lqHsIcwhX}* zH_6Uv-!4_#r0Vy7Y*xXvaf4ZHX>P@B@C;(MUATeo=&dZU+cZC^Rbm8DN2&de(1SjG z-w30mSZJJ0vmp%Kw5xu#UmDrqvZd?kzCj5(ebzuxjZs8Ub)%QEuwl6ac8xixTu}9% z=|pW|d<8iDD0$Ef<|gl{BNQ0u=%Ox&dKNk{IsSkXOrrD1%hi}7Qs z#ajros6YiS+q>aCCiQZ0mdT7+Z5@@>@Gkmzf@4s~aP#_I*zHM@tbBGVWL?Q0P4vu> zIhuu&20H>Y!sWqnqXG=0KLs&6`2bGM!;9+0*n~5~hezQ@sijU^%aAO8v!fBxhsi)g z=L>Kz4jH37wd3P&uuMFJkC0!3sOhIlUUz z#1IIFpU`CQ6?9H%0)y5fEPfzlxayjYQ2P*3OCYGPxe2<1h(wEFm^ z%@+EVh8c7kdWf#IZ@1=8ePNw2qwdKGtyW~Cr?uRp$X`iu<^JRy_bhEUhVojYOW3#) z@Jso5D%wZfiT00?M8^(abfit z)T6aQ6O>8&MHytqk#FpWJAl7XITldMK3{ThO9b)Dg6f|VW6oyTklU72KgHTS)l9G= zTSe&D!axw5N!lHZv?JsJGxl)vr{LL(-j~?EpPUvJRnRjATn$&jtG3CpFWdBb=WoSAuCxTZU@g{9r}+&&p97Tf^(>SH|IV0(66A z8H59MVA$~eK=XQninz2l_53u0XGP9yp00_aSOb3RP7@zof?#yPIn4l{WTV_)D~4Sr zpWJDC7dE=wyD)Bc5Uiq<0WV%Ps>{pM=NVg)A&_oRSNnV0v9Y?(u*a0dXYy*s#HdeX z^0WL~^;DDwlBjnQ2uZ2PtV61k6=Y}>Z@u9(QnR4(0fg19d+y1T?>Q{{lF{e_ z(wQ8rFEAZhWdG9ieWtuGra)xPAzN*)()2b!|HCb{G{91I7v81jOTL4vARq#B-&!uu zhU7z7q5SfJ5s;v@FZmru z!T#xpWAlQmM!+GmDKRdvJ2Z;Bl&Qm%$Rt+3(N8Yo6j6zu=4Hi-%o4G`mnzUL>BO!1 zA#^ldxW;G@&l@E6zRlfpqwm>kDh%_V4ii0{Djf^h-VMio#~Z1PJj^`J7Zj1!3}<**EpC^XhQX0nxpY3$;#yEE`NtI5w%>>aO(D9#jz zyq*eiJ8F03Z6baKqx*ZP3;JVUF4s#1t1;1==d@Z4xa2#>@;x7A2&d{`W>CA04P>1_ zQAs;SKs<@in7TK0vKf?9e(z*L@U(DTn91G}r+mpx+N(2`afQ+?_qKuWsHrbTYS7X; zQEx>RAm-LGOhJPgUKg;AY`{Y{V(iOOFX=;!&oV@rz@o~F+V2U0JZQh%z6`HD-ak`j z$_}FaRExm{2|%Bq6fYh+l1iqtooI zG{))$UuhF|@ZXB!E6A-|KSbw<&qs21W0u4G_8lkB%z=Oj@oj<%p5|*1`tr$UD&FFMs?7 z7D%h}8?~l7(?5RhmCslxn^^y}xcmkrAw`IH)GGygMur)Gl2j!7Bt90d{j+vQ?(vrG zQFkV8tx;+wLwvEyMXR3u$#XXqIy<`eZBQ>L_5)(pNH&+EiY6Yi!NmTdcnOEoi48rV z>|L#vRT}u6Ut{_y?M}NhmVAbb&~3{VXB(-9RRU)mcDRz&OjfI)RP`Goa40;5@|b5V zyEe1y3r`Sl5)2CO#U|=sBP0bfC@fb=U)-YF{9+YmF*5Vs zRL?Emi^{}9TjA&5mC0u4F()Kl!4&l4`|j9BA`}69R45iSzDbSv5r+vLkeW&ACCOfQ$26S_5S-8E-_7X+eKXQcj)N2^x`sABgXGQ z#yIPlmtG>Vb%a&IlqO>o&?Q{mNKmwyoOu~p>4atxgF-Zv7Ms>ii_$(80O82y+~xkM zOkT0*4vMZ-01=M5Pr}aNhEpf&HQ)(B6PQ#s@`<_cp__N%+D$ZyDHJ-`>k)880lx1> zivbMz4ekhSHRriPJMt(?qwjC-ejW8O07c$!B+lr%d?{7Ghv)w6YuW>br-S6M_0fFT zalRa%aLo`I9?~jqzt0a&E>M<&?lpwCPd5GvJ;UEE^I-nMK=(9Q<|wQh*_}fexBU6n zbr~G&xFE|UL(k9QGW&%aOfMdBBS-2VvTLEF-zORyc5SdOYV;j zu_U?;OyLsMeWyo-NIabRx#Dfuo9jxl)gwEX$*VKokoPvE$0gOYM@XaixP9pUbvT%d zt|U;pzUc<~8YR`<-dG*xdgvtS{l;l9KEtvjTW1^gtly--W+{vn$>gEot#xfWf1iC) zD4&wtM@BK;{mTu3qsYoaoa?T5u}-D4z*`~6bHS1y9i1w4w#=iNFN6Q5tjxd-(U%Zp zjBm@_%B{SfIA~>Vg67=z)GCE5CZbrjo7?2DCXLk`$Ver0t9?D#rGApa{_E?)3k3-s`VoqQSLBT*altls>6T z-8fqbe09HHvh`ZlfbEP6@qt=&a@QH$@o-|~-V$s~8g!hrcftzbLjWxuQtstjz~jS2 z9-%$Bs~Uu{tkK6zgUJ&zDrun3$Ep>vGO9hRw?wWRiTsxjlyn!Bb+S#kK;R$J2 zS18yHnHs21);JFqj_hkP4uWHAf8iz1^qRH*;hCk2BonoaTJ6`f#z{KvAhIa;fS}+8 z(@ZRwSiECd`Gy_1_c4jM@AA-B-DGpM^!HyEWGokwG4XU^c=GNAy&cPvEa?pV)tO0d&ts?t~M zIDt|LQ3hN)eVI`4b#gq;dt{`4Y_Rkw{JF7^iJ^E z@p=cXDWvG-(3d)<4Lb^Wg#EQlftKj7>v9eGvETZ4#fb;_MP!_xWV7AdxRIJWUnd!0 zZs#eed?`+TV(E8StpA6A0r@uIXWsQ;Jt2 z0+e4lgnD*ekYa`IEL-y1N3YhZ78|*t;vjy@oWsZa4Zqlgyc5XjRioY*f{i}IM(gwB zSGHqPX}4z`&6!H(FZA~>#K^dcR;H49Rn_HK?hzQwvP|KYUnaZR^{5a^T-s@VM^&`^ z__*y(Np4&bY*4vk0ZpqM3fZqE5LDji;g)hXDpyZI)<;-fb7c+G2Zkct6bouDC6BLN zk)39O=J&RY-XAZhd@|>>WDDcmg3n~)G2Tz$=`2l$r^J3alQlv~N>#3~Sw@y(V>Zwd z2GfDa0V^Nu$6+Cy`?b5QA3iM_X_Qnkj-Ho@Yl^WFY`hsc&Tp((j528z6iJ8D?HCWC zJ)K&!17e>(BaT#vD4HA`Gwg%DK9;wzU1vD-k5Gq(?xe?tHg?lJQm5&s<>A(x2-7@K zQBg77m1~ERj(^Yo5{8+-p8x%k-Wr9hqRJV5>DI=lU|l zwU%87`Gibo=3khcpJPFvG+iD;PH~HOiS~ud*^(UCxC0IS67G}cDw6AUJhMRlfNH8` z{4c^f6M%w{JzjPE9V+Kp)V9H|7`#{8KxwwKeo&rtmS0_sY%utsAE011(`VE3$dlIF7^-exD0 zZ9-q+7EsvO4%eZr${?6*^g>;d6gsc^?RO>TkG5u}_YG8|E9W+GA&Y)|osg8G%Gfru z2w~}`qzEmXD8|G=Sf}Wv_ksLJ!7v#4c$EVPg%^o$%ZC^2T5|FO{oQ!w{4t%lh|5-3 z)9t*5UL?4-EX?+$0;pku$7sIE_x4b^OC|h;mC!`sT|)v3UHe@GQe@mc7sW83zU6A3 zLh?PaaWLG|jnd&yt6wgm1WG&ZJ4QM!&bNKXzr|CI;xiM5xa%9yLsdJzjz2*k|K1$= zMTn^ZewOtx6g~K1tiK^9ZjS^v6eK`j%eEOwnlTu}S=+(2P;<){{zlzix>5U;|O zauZUKayb<&`}3En>)GP#UPfc2;FHC-gO)eag4VyzONwAnmS^wYizi!GldJvX;|#aTpd$QV zUy3GdEPMYq)n+ooenrS>JZU;^=D+dY$^bZWvKa{sD3P>>Vket*j<`o~LI3GYrPhnc zE@sg1W%L#HMu_3*XK#0tTi|2E&75lu+?ELjM=KCT$%$IHO5s74=PD2-z)w-Ag_1&i z1c$K%7#@Z46NLff3}W6WsX1YxsrpfL98{yk&7HAVkunk1pItUqXZ})KeYJDe7i3MT z9&cli;BFV^dsx=ci^;{&t$r&Vy!t&Mscm;bt%{RfLLVHW6J zQ%g;12UI7U(N_pus1xH}xj}(vXjLoIjyP-cJF69;rUr$&c0LvrarG6@utY4EmbH8k zgw{TcVUu>KlKNP`_Pk(Mz>b*}%*6s9yEbQ3o_i#Kq&TQFsc0qKWWC(P1n4Fv7dk}5 zt)9Pv&-(-nlM-Bc)MKioEF;W!eeWer0eSg z$;p3!(+kh`di_Z)IDsuZf6WT;b8Yq97(g~FBB0#P>Nk%qx^512#2@s{T`HyDWz$ewEUjpOb4C= z-eg1@01w2@FG*1SGI`zv_n%7v-cg~ zqZH0(8wkG#7*qyk&SZAKpNXm-Nm4gGWgn=m&{^23C1+M9vUS72mcY}5zgAzcE0EoK ztnOmhgUSrG0r=;g#MuG0H$D{~VCp+x+oc_f`16tmq|AV9&ip?#;@E*|8Q!uHa(WH3 z17bk>ur0l2?R%gECO3l<$VgMq-xfe;Tr|7?W>7-2$@-u%q=Txcc$2e|fJ6v$yt4i( z0fuXvfBMJ4n_p#?E6BiM^EPJ(W5cMhZrbSca8lflx9M;RDQalv;oq{>S0q8B(|7pFa((`ep7w#(f6(2-#vk{eFohs1QXC)pWA3r^{R5)dr*!WKy=e6&B$x%bWP%wn0qtx(i z@mDWVMZw2&ulu&=Y0C;}AmwB#`nBAwM<6$fT`~2MUoXq0RyNrQ{kMr222WYH-DzQR z|Il|z6J;(<*clL})@pf7A5<{5C~juR-6%Ui{+HZ9|u zz_uOQ{Fbd=!km2RERSWkNZKRCj3(^tb{6*M)wSU9{+50&w}$w6!Wi$!IF6-mR6lur zMPZdR)JKH2nMvPKZjK9N4i)@=WwUqTI61&0SEPphNK}*A=C!%~+5Q#yuFUfl%nK5J zl8qZNNWqn?7Ngj28~loPZa!RpudH>(=44<3?jPXrT#r4b9scK*0ZKH`v_~$i?PE*0M&S)tCdH0o500SY35lCoBPOX}=MApa0@u!ph5|B)vRc5HV z8`nu?lVzs1H)>0v13TBpGRl6LeH#23SeC&Pz@hDM10|DkNQxX_kWXO+lAn-(UG6(y zb?LGs)TRod$feO@vHP1<%|@|9hj;bLi>% z?PQ+4TK#Qf>AWg? z9n4zDHfKP=3x75HgCU?V^u@{~s&Y3a!&&NFToy;e;|A>6%1vgkvW3MPST8JYG1V9( zgSMP3f3KUp8mcFLpv)nO;o%RCCy9#}F)w%i^z+M;O^JGn;7^J^XgAU*G1hX$H zNU|yd;v^`WeE2z|RG$9i@quRI;qwW4+uwy2vRJ2qqi*tgG?FN(9Qgpy-f9|-v?YW< zb~$&!Qcz%g@*mDJcHn9Z4I9+6pAw%soMQXd(~1^kRHPLBY%Tp3DD;(qt3N?ct;x?t zKK~1Ev;k}ACxep03Djx%f53x%Y%%MePLa}u2oVvFCg0B~bnSaaX;!7c;?j!n$v=34b)DyWo}l*0&tnI|DvPq9Z<7KvmO} z!GYe*$Z6xQl$12|?ktr z>dYey+(!gIspZVw_H#8VMN(zITxZY_5#vO& z5=I#4Mqa&7Y{v|$?zXXA&zeyf`H{~S*cq3C-C)|QtD0<~XjH^P*eN8}^yYlQsNoGc ztC`GuTZQh|jdhe!cfqG)je3UQ<%kVGm1@1Y=#%0VvgJH5(!mo3=iJo6XdUrk;@>%q zj1(2gi_qPvNw(!p9+^J+YLH_&6^%s1$+16}5W??Q^zR@8HFBd?1RJG+Hm zp>F;{EX-6~Yq|LSQ5(@y>1D*hKC5%~n^$U^KLT!WFxX7+x+++XsmXH02?Rh;j?q3P z%xLdtnS6Xp|3)FUXgqidMv6S2E=y$D2N~3SlW+gn*P?SXct}HC4JNc4!sRUJ=$KJ6 zI%hsPbRLvO&M*D4Uf~8adz3=2>}*b{=<*lQfjiOw(DgPxSM)aC*RIU=Gi1-%fvvrO?xQ`Y|)3i5S`IMiQ^Ud-w$giet_BO4KsFHXU&?gJcz>aCK7 z8K*h>GGn(PKr4WZ#|XXaWM?cMt+OR4i6B~guobhJdv4?O=VR_c-|Eu3+yXwX4kyYj z;g7+5m%ZEPgy6gH_KaAAhL&7`G=1q*OcMA0JfOhV`Bc2?1?6V~I^SqeNQDr=TPgGh z5@i$I*^d5?lL$!Ey>h`(wA&-T#5H-n$P0u4MhqZ4lrr3EtRGrnbN?CP-Iw!>l1%DE zm2z%xmrMfmr843PgPe1h7c*Oyt%}$y3N{_YU<_Od%^3z@c+elPzjDlxkC6QAZaTOy zV4aP#3fIEMALihP4hTyiy~bav@wL+e42YaJ!ttNR#h)-~A0!bbvffKOcWngR{lTne z4$cNZWB)y@S^jgdQ)jezV%=*Qj;F1|p9{ryZ; z#5^E15XjLb{-qdqj%AY#nG6>cL_;+&D)Mv4m@|u#JAA$V!02QS2gj-`mh=5;Mq|Uz zLI6A-U_?lyfq7E-WHcKA%}CzR%;2^aN)3CRJD-jcG~}p<9C%vwC*n+#NH*gV8er7z{$U`O;Jo*mZN?W*{CoSwf*mN5b>fYx^&WixFAer(2EW zfAh)r%~M=G^mL5cy51LGVBoHXh^4B2AbeZbJTV~J;|o;!8?&@VH}D}XdX2}_CrVU- z6!I>Y!kwmK{m7x>?~vzkfHt*Pk!xVY>W6XiZ?_>B-{4kXH-qB>3&>Y$5!@ILh3lqm zCi)VT**dGSCZ4~ATx(TM3OT(Ks9Yt%(w2R}vt{#*7b|Io46w(i#&=#>7xxgdAqi!h z9SNH|2an74hr{9ie+Vp0a3671R@J!3pIdbcr1>%$mSfz&YKs7~M2ib$ar86rEK=9# zE*JxtxRKPEZGUn7uZy;j8natc`4SLJE`7Xp-YU6AC$3Qcfqo2LOuFvEF7~BC5t2{M z-I*GqYpMvQzze5AVqodtNDwJ(h$#@w)hkK>4!o0i)JcBuP@`p(`HG0{2 zhU7E45RrHRbhsd83X540Nje#yq&V0#V!^0!57e>a((l~~0v+3XYT+LJ=t@iZ9eMQVP{l@?#r8pnS24wkzWNhXHI!Q%TP(u<^5LQ^JtKI?mPY&AQwp zRHI8(1)k3K9b$a~M9_Z3Xo&xA2QvaGZjE2@mP(V|Xp(xnxsvazPijA%0rLBl7ousx z`C%QJ7+a!cS|G4${s`>~G+}y$WkZ@*x^&0(nsypV)O+Vj2op!!uBYb3I4$_dTlNxT zvh@P*S-kSSA~4dGADl;ma#kP!3;{9f1q^9rJb$;KpTG^H0aVuhtLyp=n^JZ{rB=K} zRD|^4msa-;SpsADq&+AwV4zBR(c66$Z!zt2VHM-jMO{KNcok1Cqd~~8ADFY!S_Yt` z9f>jLrdAd+^k(WLeqyT$J>M+L5p^!x_uU9uiTq;kwa)M`ROZC2e?N~PivefjOYIgu z;A3_00887_2TN|&?{@y_;#Co*nN`=1scOjr2^W~+O+62RbMr;WGj7oe?!78+hVn(E zc;0C7AAZ-FFq*F*e*tr$A0irZ;>2mtyzIY41LG`UeX}u^@5Z8RS!?ki`ccTjW;vR= z!#(14`y7?ra}TYJ9)Nq>M|K+01hGtks@WdwV{4)P(P*?nH%lA+uHifBVX}QD#n8q) zb?jG;rrOhkPMsl!#hka_L_)(5-yDk&lJxi6kWyqLAc9V@_wO~zmKC&Su?}iJv(y{9 z-WfiQg||OKqW?B4u|+5=HuQcRZ?}Lt&0Mm>3J_J$lhH7S;GJIJ@ce+@h;{|ArosTo z*7`$%`%Ay2Jv}dlk}2a+!D9ywK43T+<>h6;YG(5a+POer=ToeiWbrq(cbuyRSJ`Fo zas#J5YQd|hwST*}3EQTiXj|lo>4a{Won+-6tyB`?2Fpv^M|o%*N|;`<$9y8_$*3E_J_ZJQ!K_RHsT@B z_D+o-yOyDvzqvoum*W5eTszp0CUVM&`655rZ&WF~^8@ndzC+|!GAM|?sqwMtp$@!! z!@tM+6%wT@>V7DG&kNQV^&RHkoq%kFiuoRy)d(^A&Q4r| zzLWa#1G??+t?mzusHxgP#LkwpMt$s^VS|=QJYq#Pj$ov!RDuU`Xt#K_mTQ`ymWHk$ zrWBoMviF$SVn^~dvJuGYo$d#hS{VVWqj1ox2cu5FqaRT7L?#Y-D+e#AdF0C}jK{gQ>C-M#CBjzp>?67Zfc43sp(8V(T zD-ijbRC!wv(5r-mE7682fg8L+n?gl3sFQS*wSag3t>uK5`KA?cq`a62P<3vJNp#P9 z{G)o=83ZREsb36=pkAW00_T!{WZ9o^2Ar?o^!jesrVx7l3)yG%ffZwL9AE&cKqRAq zDG?QX{mB%N5`FF;#c@ddp~j0<)KNu-JQP~>&4}zZI0>wt1f7}?R3q$JPMd+nK|u}n z#<>GrvZxx--onhu4-}@9z?t}w9yKA#Km52%D(WWsaQ=n{%IjCm&R~$hAr8?ce4P0E zW>H${aaWp_|D)+DgQ9G^Fx}mq(%mT?N_RI%cb9ZXH%NDPNw<{5f=JiWDJ&q3@IAgW z-!Fz?Sccu_KKE7U9I~V=|7aZl;w0afhw#j&UY>KK*y~15l`CpVDEO9Fd)_9ryCvbB zL=Pksm>RyEu;~SiYZxFQWmQqQJ#*DboJhlpvf|94;#C`E4$-UUxy*)8OAco69*i>t zhPDuFF0LtgoT5GpXgSvK*`L=oj-Aos@)RnvNkbf^*;wf~`A^~Kweb#VCekwLA-YP@EzV^FaTCnVw9j2W7zn4UIRa(7P!<60S%Z}N5=KX-&nhu z44C<9pTagI85t)MqGFR^_24jKJM4gfmCfY?!iC8zClFo70y#e-WG>dHim*=VFLXj1 zXuD5Benfe3+E1-l6->>sOvnAq-JL~*2So8<88g;;8wp_C;`kp1l40@zYkZ9v0AUaP;~75omU@v~A)8 zZ7cz7x%GwmmjMY%(1np1+~J~BVJVm?r)ce|Kjl6NhOsxtn2NOC+S5>pC~36VhFI{| z=;Pns?25ubz^wUzWoG5U;iCGfWXXDN$A~Jut#4B;=kuAlWC-8rsfixe&fa6)cIDI% zXAr+AG^O~hv_|71_&&!T)nt;B6sRxu3Bu)mYpL9~=wD|D&uYxnn*~qNsc4XFd5$5r z%J_~r3AZeKtjzfQ2B;mvMg(f2DB!|<3~5P86~^!5KiapsDS?Nq+dgxOTuze9e&%7g z+XmtXk_5nKF+fG?obi|VTv9~ZdhOae2Jv$~tU1rG$MzQis1!0Z+5volQqtBuH}DqE z`R%0tUJMVFW|kqz2R?+c@JZOv83+g-``o^BYHa7FcTzlHX~HTog4=2mIp|j}aC^~wLwYT%rK{XJH==?nu&){uzfF4AD}Zi*eo@bS$<1e0qjk8&93U%77+KeK z|1g#i1tdgSN!GpLBUfJro`V_~l+K;?e^lbdhRuKnf$N9ShbXnR{{REc{|RRr1Y}rx zGPg{Bi8)H{U(I$2V8w4zh!7+qUiF~5>{ctAM(PU$x96!iK}|I=q4$)rvt`BFFZ_b5 zz}}`36vF_#0R%&yyfLf2)j;y;#X1r+a}6CVTU0attVGAHDIBmo2gQmeL?fw$Rfv=I z1_ggK6>rnMY1LjX_?@4ZbKhus2a(d^0y2oOLLEtqrt9pbemZh-kSW6zYf$8RNYpd~~_s|c16w1PE-&R;tyRU#;I(A=Cr4OvH z;=gdyzC?NK7ODb4Qh15fC_qsmqqm@)>j@!12s8hc(*%@}`N;X?|7a=g7np_w)8VMh z`Wp)AnVRO3e$u0(_#zrAeVeI+qBX5Jd(Gdy7yFNy&#mz&`HNE;-3=V|gWr+^v5+*= zb&gBET+ARQ6$%5Apb(TptXsc^P3{N^;rL$Bln5=WZVsAniP#&qqQ`jTO!+S$TF86S zw&L6YUbbZS6{IkT0;}}k2RLwpwsMufs5(&yZ1+p;sMTIUV0LxY7~SrqfM&HgJgG?& zgD3HF6ci?PF6KICBMt|&6QFT_T_6jXz62z238O(_ghF52tO3(8lIsnrx8ui>V#Xsg zYT0q~cK<%b_lM(nE-L7uoCH}0;x~+a+m{gZUh&&S{`dzyp@Xe@{C6AvvMx@pZq#wLa&03QXAQ>TWIg2Y6{(ym@tevi=C5(5n; z`@f8NOe;hTWrRQ35@5^9z+(fwaIuJqtXz5&t`D&FPMSgGKdpt!@1%>;g$nOqS7njfEO0^n%P@LK$B0v- zeHqeWfa0g_C!V4Xd_w~*t?0c#xn z-*;iXA&oIZ|h?>`WA#O6&PhVRjEAc22qk-up`|w{-KUi>eD9t+BIZ_s$Hdeu|D=ZAo z@%Kg~i3d3lmkp&t0hpFK;Lu|suTkCPyRd0M1NkEWM5(j46uDWWnHOoE0rMZte;N#O zchM!mCRHRA7hw#L&Q3J$+~Ii8Bl=Ew>w@$bL|=*7k|Y2v@h0YL&gV+L_t zPW0FIK#CxhaJo?6D&U_U>c?Fpsf5W2}!r; z`k3@wbIyZcc@qDN8}QrW<@O-1FJTdP8=WtrnBpKyPATwQ70_xakrhtbV^EUb6^nK5 zZZPGoE+<*sRvZBR61kzy2=ve>H0fRt0S^{5OxSGB!7=L~k}&@`^GB60BjoPXL^mA1 z&JVma_}GcjKyxZ5FMFZ=#nQ zb72})BCEgicsst{r!2tLs@0npqxZLhBZTMb*YI0qIhk`M-OE|A2`3)B7yQ8i3ia37 zLo9WzWbRRKm1XKPIQ}REhZfT6aH@AKNK?!Pegu7CO*EAki=xI0ej zZ^OZv>q{!B&yU_5<2D9r0pGroG2H zbGY;W;Wtclqv|8u)IL2`wf%!WXKZlZ-QIy2-lTB6 zeJ!7+28Jo|y}2lhB<*8n79}Fh!^fg#`3x=eP3HFY&gi0v_g6vUd{6W$34Jl1>_Cef z%p~#4!)CA)BYu^Stu_OTjjQ*I)64amDzIz^j{7>tB;2qL1}03m;k8NvSX2nCQ|!d; zg)Zt<^3jO3WDP{z@oZupBF|?LF%@l-)@X$=#KJe%R41pOOMUaFNU()4Saaq=LRoLV zJ{hU{bbdc#Pe&oB_v#98v)ZGD@4KRL7zywZZFjWp*9iM4zSaAP`ttGv)6M*v7tiU@ z;q?GZ51YopvF&$z_H&4n?WXO+JvVQ70y*uR*NfNaP<=9Aqogl5p;cFvVmp&4{c!TiI_aj^qi_7o|UoOUn3RR2u=-5sv$lIxS2cVw#D1s4Jp} zU@VFm`vdhhJ;p4SiMe}fT6n5EvAHgysIEvAPs#MmZ~im2dfp-;RItie{JT z;*WAN>T`4uTY*(0dwLil_+T!6W3|yM>vxGDjQe6s@|Vvyy(F>3Pu#r}iG;pvb-IkP zz4w1YVei6iX01-i<056*9yvgP;|Ti&RX$|xa`SjbdCYh6zdX?i=~Z`PepA*-Yqe7s zBn=i1fWaSXq9t9(IkPXcJyLBUf4cQYQ7~6HU~(Gh(Bq zQ>3sE=&H6oMf%DFd#-3Iq{YYIwkNVv+q}C_rJ~5qK?B8CQ*1pu6#p zKY~)i(jm_##*k6?SMv4EV5pJbhMc&CFypSr4y#ZF)xY^}^1Uei9f?*xb0|rehn!I-y6#VZ&W9wJn?-;J89K=KG4sp|1XLeHRFT)i* z2VT2eg06qo07ilr(@Ul8^+BKW(FiRDsdGiE86!&WIseMnpM+JUziEPkn-Ik@WH@uD zhNj$n+h)Q?OngSU`Un#7k({ZvEnkO~utbb87G4kRsebZ$_hk7nQ@X7Hp9q8_W?^S*j%YAAA^}=w$l{P;#%W|Fp zMb_Hk2IN(JWrH%0osRz^h&851Z@Lul{cLz%M^!W9_Ry2uwD5Y*{683i#tpr^Sh7(w%~SB#6<8I-YML&v&7p^nhjQ;pyo{t{j*86$hW1 zyoe}!-h6iAl%*JipL)Zw1hMgo`;F8kYRlM5)+vBV!OlB>y`xUnT8CM$t)tNkDI0=J z=WXSn+@AO7KLYiUg~9izh0bHCEG;Aw?&BOkHlJNyP58Q=}tJ^4%-KCv46oek;_XvWOs z{Ivd*ndSrwXH{>tVo1&vEh$gZJFns^{Cu8v{5o!nLiYzx*pRvdPV!ud;3=wOI#T$j z4ZfayA8>e25Nf0G8*xc?;F&>EC1sM!v&6j6Elp+&RV9h(_6&VR?KRPQw~x8ueFJ{s zcq>fQngE9hN~-Vvvo^AQ7ZjL^Csz=ck|TW^jJQE%(6pGlna{9^>lr!>V0G}u@Q&0YbkhsA+FapJBM~hR42e= z{i#n>bJa_^uS+ao)%C9qnE6ARBiVr#G9i5&d96oHgyMqD)$x)khyUMekA5FmDBGM+ z72b#i$@pj&+JXcfp!Eaj9f7X-z^@Kp{@guz9kdkC()x*8dX zRuzLZLVgw4C}!q2@`*YWe0A&u;SOyFUQ`y=*4t$vdnu02MZCshT#rMMSmYiiFGu>M zjf!XiWvtCTVLAMi_axecx!cBr+k(E~@@9o-O)Z^+K&4(3HL(I~f=Mj~BeY_k4T6DKWB2<`8reZarD_^6=OvXOhVz7E;!o znk`1#h_ADD0<{XZ1b5x}zO)+W%w53^=oWo*3@8tj(f(J`!9;1RWE-sEmh}{(YfHV_ zD78hGzvlY_AWM%o{}m*Hz>}`VOZekg|M6xWGBRP50&Le$hoV2bc!iCO1zWDn+k`~U z$PKhtf3|PV9r$S;EeXqLzQ>zc0qZRA9m~K<^9AASh?4TK9VJ>13x0ca6AggybP{)> ze4H&=Ux?mGWGj-8WFQHg{}>;6na(O}$^^qw)c6Ss;0m!7A;rYLj%-agiDB#e>AUfb zP1ErgTI?~l!tn(1>%%$f?H_58e~)&`VET*x{Tic+PfmJbkc)HAJ zTa?G`bm%Wf%F9G{ck9BzAfm`RM1!-1$_UX3Mr?K4NSr&abs@FEQZ6+v@yL^$*QgXO?@40a`Xz~(Fsk4Wp!%@@YjsFiVj zg2WO|D_pKjw%4#ND*H#6P(k#qG z)&nJ(aCci<&(_PI*6oL1wtW=64TWOl4=9UNC8SUVw)eXq;!qb-(GaCeb@6fN5hX%SqnDU?x^@n&D#U@-oUG%Fjbwr=_xe%CS-fRHsga^v-+}8*x!PcM77gb#ldbvGyLO8C{Tf&mE^&Ehb$A0 z0eS?g-t8HJwO2cgC~p=;q^&~4lKPSipiR^Yi+fhQp*^VAOaF0mb9Ge4V^uwJyfe%w z>#HqtRq7mM+RT_?2N%h>zOLW^Xz=S!G=O2`Om z%B2HQxJuTZ&Zr>dzE#8#$aWjQABBXe*YF^TND0SNAwbn8vFq`tegC-)z%okx$m&jXBu z>p1XpX1YlP1c&>0$XPbCw5b>)Z2nDsHUdT#2Wde|ILgbAyZmLh&v)Ef#=zT(KF%+m zXmU9?>@-{r)i7hi?7jr57E+SAAlhoIVR~HMh-*+3iUQp`E<>KU(*Kao);oK6vs!gP z7cKKZMT6nSA-r77bO{?Z3lrAJ8 zb!TRF-C_+P+C`C;xj)=Chlio&i$^hGef$1VRV~~f3)fK1a2>K~)UFniCtf_mb7+Z9 zL1gj*?-8_hhq!zUDZ)RBJ0mnu6~vGf7%GU4x6H!;bnY3PFy^m~DyxYGKoP5b&(LE4 z7r7$MR!n&c2uCD0{?c@X^>XJhMT5N-fI8i!>7baGOkUzG%OWbxa91&!sr&8DZwF$l}X{H5B*CS#ijHABc=$UWWi7 zg(FZxQf8XR{gKs+r%IqIN&1W-K=2cEz&qs?3^j}95BfnS$p(GGbrBrx;_*}dGF+cpX@I4LRKAVD8q_G zT~@Y{(JXFc$@3dSYQvrbZfj>>6=6WB@%J~*IZNStUoPS6l1*EguhE}UG}=ovF1-__ z+2k2S^bxSTeD}W3a#kc6J}EY10US;-6iL_*BjCLX+S>PufK4{mCFE$1UY8C_&=g^u z4TpgqFSY6C)7m>S*QzZyJ-v-u86NYEuYF-3ggZ-arWcmuIUOy4vk$qO>8K#G3|K0N zJ9rx_bKl(bm;XAnX1VU()uPh9Y+ji3+Ki{6g4m!R6=q;L!lSS@qqju=u1z9h8X-)4 zj)NCS=8%3(X`0(RFNixc(XCV=U<{9olqghY+Jo1m}Tv!3ymoRr| z`=*lEX(OoW?bXnKd}Cr3*A#51N#-U0lNaYJWYLe)%NmzgL73j-!JB}w6?pe(Z_*M{ z2R<t|y1fASr_>wRk~a1viTjt!7v%BytI**g7#m3_P%$44nxUi=OzYsqmo~C{v_o1)Vp5 zmV*$I{eY*kCA6j0aGTSxdoaae!7co)>5!oB0erC?rpSBIQJA2*mq5xv*gzNf@R&il zBXB2%h|>8Kz5TLJS~yZ^PwcP%tFJc@JNP$f5@p-5u^|ZDc%>;c^ zY1US0mLVQjCM)%TE)gjt-TDGsLOlc^eQejqc%3<@7mwrT1b%;FVAlLF-j{?(szVvl z^qIuyVa&!{5?Y6KX3y?!*{c9&fTMeH*{L~^s%Z-ZlvH?VNk9n2?JyYumR8jgZ1_z# zz9Y_&jIJfEPxJ<$4G=yoS)Bh?69H1#(T6q(Ks6wDaz$!L&4o=h3QBs^JI>sB$_FRl zkL#%dt5p8+hvZ}n-@juZWl)!}$Gqz%aA0zfr4esGp=e3}S`&yru8UAnWDtDJOLmDGh#!8-afX1DkVX3f%JxC*y3*qF8RW|8`;3sP45c- z@nk(b48t(H;2`NAEdiL+9NDg{h8&X(9TX`4wDN+Bh~z zs%z6m1y}7N>K{|kU@(i#E(hi6-)*>@CnFV(pe*$4^vtxbU^%UudO0Y@ZjAn@3QI#W zek0BaZx^qXDd9pa32xtunjsl}T{Y!7HpnqP=}nwHmz(zJ*$&a{cj9w*p{7MUmzqr2 zxWoOdVxl05SenW+FeA#i!F%79+Ilx{A&2py4opgKO1~rWo1gDc}}Y>n5$)l?;M z(;K4v9KuGM+QDS9Y32>CC?_t&!+M>9>zha9b?#b`j5#ow=DPc%S|}P8SwpN`s|OdO zGFEN2`Q<{s=WM3We=o&I|9eBsWdxuEnNG#UR~KIqIi}%IcTcf>MSs~FO}W_EI<~CG z`WHik#dQ5F+VPmFA5z5QeJqgoJ;O{w$9>D2jQ*bmSlIl%a$eQHGwkBoZmE!pZSv09 zP>4X)rz6V`vy5K9J@>?MKJRihFFvm!7nqta#n#WNSrY|_WV551D?2TFVp*^j=mKi2 z@yL@XLC2VuytI;Lwq)0x5SbprY2h^_KarflBp9FIWPB-zfgnO+3FP%wJSqQ^-Xl>+ z;gSdzYMcTV-32w&;UVo=#KNA-&hD@5$Tyapu(Z-~>L!|R_vba1R*SL>B(th{!(MNn z7<1yCeJB$h1BrlgxmCRBF_9C01#yaxzLemaG~s7%b)(ei8h(G^%a5S1J-5uQwm7cA zTkiOFRhmmF&4|zVWroh*)pMa#JHd{^)Dg#JGYB7G5Uexih9DI(iXbAizQ8v>CjK@j z)|I)hmE#MTp?piEfL5`i12&lV1BB?hHQVvvYQ`dF&DB=TPyPG{s;{QB(zGKO>wv(} z=E{oUZ}jlNMSikbN17j-FpY_IHW_nWR&-$j`rB~aqYDVmjV33A-)H%w@<^8qO3x;S z;OeQ^XBz3fFU#xN0oB}(xV0o^BgEe zxq5l@+UTa8JdsRHh}p@34j<^_B5Euur_?VYHDevtFtWK?5<#V>&3BnzE)aQ%$5(In zv0mt@;S%Hra0BKWMM&vwVreE8);}>8UGaxz*E{b&7uA5cxRa3E2;My5NnRw=GL~f} z9jXWOIi9RRH%xBi6PDtlXMHAg_1<-gk8}<%VQgDjKPAtk21Lc&P?mpk(2f?=)5dcm z)R(ewq<1!eu0Oo?~HZxY09C5TNqM3KIk! zDFIFJM?e2>Ji(WBIQxp8`|kVGDZLQvj}*r?jWQonYRB-m{sQnt19k zqY8uFi_^Wn>`9j~RBlBwFi_lKr^Z01FSYOmrKlGjDRF1ns`MOKOnzMUAbb?{hH^m}gybD``w=g3=L%3exCpu< zU4@adj>pFCupy2o)Hq}#mTytCk#XI3k=lqFv?Lc#e^W@FE1TO zDLPu2iHE96ax%ST(5=mvb2SpdwV&#@sqob19V&6cSgMug&j@tzls>x8|3(fG$!6^r zCmjYr@P$=bw+nBC75o4aK4}b~_qnl~^dkRag*(_iqMR5&c+I zYXNjn;DLLI_hrRjLIO(#-qrtwt=H>Jd-{6?+OwB*b%Yjns>?iMV9&M_oTt09cemO8sR)2}@Tq zyTy2~c1DKZrhC;==X4vb&FwG)&Iw)XlNuA{v3+Ed6)XUoF}?V#Cr#1KWQN7GE~!{q zbx_$Bl8T1bF6~DFLk+LpqnS5aS{ieSspNEzKl?IQe5v>S=IeglNwY+ZWxLFRwvvpT z+shb>pwJV2Sjh8wj8J%s$vBmcjIl6N`~}B%Ic*$sc(AIafdy@2 zb18~;6F&Ppdp5xcYDZ_}(fL67(C~_MVs^2I)o;x5QdSNBmIcw6NPAdnQ_0xoQ zLs1e7^H%)#tE7dXUVLSuyQ3u>`IzOorJ}z_2d;ICmbNC#w&i~_xT#PcHq^xLy7G^4 z;emq*K_q=@>O&~Zl8c;M3bc%)kD9xme)a)GX4T(81kz5A?pw;_hF5?3lS)PwwJ+yt zqQ;lPcJA0@&m6Q94Ot>^hzAY+TxZf$egI^sSlz}qw5&=H{-6EKl5|e%svmcK%zU@p z!*w=(OF+tu#rjf2wm%DQ@20``-4BwxJ5Bgk%x77rXy%t}t9Ar_) zcQK>+u!v*wtkE+Lhv=z1H+`>h9H3JmFG;` z0j;$h9-M!Z;YK;jKmvlItG548LxP0l$Qw?O$j94#yzBR8of-EVP?fuUaaOyo?C==l z1sy9|w{)ctK|26qA^mNkJZ|*p!Cg>zZRy>xygI}Q+}Y#ZZjVby`ns0Gtg&-&J*TTT z*Q1_&u+2?+$p5jpyaft*SOz*)W@!eJW0cmagkj)6HW_&3e#a-y-!Zxsb${;LQh{+O zJP$}kW5CaLvn}4TGj>%U0MT9V`0-F5I#;A)XiQs&oInX4i-$;D7D?WG zCOY4xSD{Urd>t~hIiP*XnS+Az6{B`|Eck8HhV&<6RdJ)g>if30B&4C>1|PDS?;vUQ zUQS$I(ad?z@A&x4)L6D8Y-Fen2!{@e02bR-j6Z_Qkt<}xL%vk@ChgU(qM1XM^t^Dn zb#+{{alhe>WWx~g?jm#5_Ve5jg&T~2Cr$t8W}cBa(AuP@Xsd=v9(XgIdz&~iY(W=z z)#V}zhvM=}1OqkBecltjIGvJprg(AHgvX^YkH(xvI5q}CuDSfYNaMi$vkQ+XCsfl_ zcN9%1L(zg>OuLOj0lugzGH04vaM{Ybr>6G9M`QryMp=Ww`4x1lmjjj~|6ldYfqV0m=C)i2c!66F4jlWi`}I6VwJvUS)jf ze@oOfcj}MJJ^*tLRF+eI@pcj->!3WwJM$GW)l?iBwFLR>uORe%Ay*Ocmo2Ul_rglD{UCTU}R^S=*y1iRIENVxjhDLG+YHKEIzVkh=m(BK$EomzD z(wwo-uY4z~{E+L9s2)3ZHfQ=h#b@gy)V@nrgAFe_wrm$eFhOZ-Y?0$@$Nd*k;Yd1* zwEfl@#cUA5a%!IQ)?V5IN|F$Tng9z z)iwAejv4~8CFwsv-F4?i59_sCak=;W+U>xxffy1KAJJA}9pSj-WGP&B2IOi_TFr0ED+BAPqD*!Dzj^Fn8OYzoCI@RD!C1(9r&& z+T_)sGoM3lK7M@ZR0beq@JR#Bmfs=YUL!CYO#+aSnK*ul7{B)oTz_6Ji#W}C4A*AW z@PGq)HfvOyaMZMDK0**(Z(-vN5YX^B)bb@H`huH+=rS02Z&YEY%6fl!znjQ)f=nWL%ka6tRJtL`RQ{q$iM{ z0FgaQ3;Nm&%>W0u-{a{r_IuCz;V2KHnDLErxV^jEDVjrI_N(N~ZCgO`^0D^swv5$BiUS!zTN!a?5{~zKE%0)W% zocA*tc>Xf|Md^U$vXl>qJxz7sdRv$`LGnR|os}@suE^2%P_lTnTFWJVb6TgItV2$2 zNdSXzb35fV>AS-zjcc1%8e`phLq&472rdg=O1 zFtWadX2dm}$_q>&KmSdTs|tFc#aU!D(yza2>fjJfS!c~_Fn zS>#|^r9Y@$wgYsKf&anTH~;&Ik5Ey-%>KnrxG{zUFb}p+rR7K97SfJu&U~kR(|?ve z*}Q#jH!^BvPrbe=rrVt#+;F{@v*wH8UE%-CPC^X?&wl10zzhz}*&Ycs@kWZNht%L6 zPlyC_L=`i7UY+%z8PdTCEa(FmcjrLQ(POO{Si4al3mS-&EtRx=!urRq|CQ?^uT!k% zcYyaSr{nQ8QQ3l7I4V88%16*aDy|g$%F&T}ovjH*c=Np)A3mNe8?o|h@$FKqe|pFq@+Ilk4yy|o0ZpL>uldxH=>G($u|FV?mX%XS^95h+gmR1}*mgt4D|NkBS>x*_i3CpD597X0uaR6r zemas1Z>FcW+k`RwDZy5I(wQ+y(@9-b$o*<<1-|QvR+JP5zg^ zSm=ies}8#47Tiy{1#RN!pLkdnpMd(0AhjtX1}8jET`Po?r`L+DNss_d4L6idsX5OD zhtnEmZ88G~jivC2t$@a7g7a@Mo+Zx-i&M023%?|MAY| z01Z#M+J3bw9|VG1_C)8ECA{UjJYI!u>>Gt_+~K%+3OX2)m@4n%SbJNKujLyPp>DGq zR5Fo>j{hC6f!DRnk@E~b+_)utvt0l$;?6(Zjh_7$jgB@*V2DNk0wa^dkGGP0o?+AF z1=R>w`p=;$wDWG4F-w{pbKt_vMv)4lE{l+EtS zUdgD%d#TS5BIW6dmoO?URB9*td3|tm-pcyW%R5R^7a5jMfB8y!J_siAw=H8p|Zy z_VY@00rScduGZ&pTlr$BfZlaP-WmKL8SlBNdpXBiqa>Ua#vvASa_l?FYS#*+8qD~` z`XFz4sj@Vr<9Az|VB5VjhQ>bhY9n{*xIVm(lLSZ?epM$FJZzWWH}A{dt0VEh3zRx|b0j}SjqjoQ zn;aGvF%qBK%Fdd2(C#|(AM{)p$mqioiy3`|2(nU7!fwrbz5u7Xu`~K%bQLQIJCVBb zjB3J$69n97C+>sVpQ8Vevm+Xzg_EAJTDx;wNpafZ0@YzOx)E}Cvk38|>xRCOI+q#lk}_qd z6jE4A7@$&D&=Ct?e}2etOy-3pRvy8G#Rg#F_r?h7+90=Oz;!~K0Z(p%1}%9CwJByIxbSmBIQY2)bT>jRb1BD%(B)YOh81JV zqKa&ORopY#)b-vxgQY_OR6nG5oNil%-v_xa- zD$FO?cfTwfU&(&fS-7%p>!g&UhHI3yc(8SGQ9!dRQn8KA(93B!w4^LW8TAysU*akfSlW1VT0x$qrn`^4Eaa3eG4Kcua$j#- zardW|4IdADh>@w0n3!8~5D-U-GLA@uM~*?0kRz+SFZ4}A^k!2=kB>5PIRTVsL@jZ? zMWg5qF{9NANd2N>;dUn%n42ucj1}c%K|W2D#ipeh5dZIbE)S z7F*I{2Pw{b;_F(o4^!Stf@R`8e@j%>A_DbuVICPSl}DNDG!6>DlphobU|4|YSmxp( z)#NJ8(Uo83)Zq3Ulp_8ke>p%@-MaaL+2M6I0D!M$lBpq zmgY7@NW8|p_qmmJf?szjJA>3iI?#?hn`Hvdo ztcn@P90d99^Z=SD)P60VNuOw+Be%o11Spl z1UA{^k%Zw1fdmf{y$$M;>?}s+M*?klSF`~&g93i88-=5v_%RoM!{wWNiac$mdNgg& zd9IeNId%r45W!eRwLyWjyYwn|!t;O*iJ#TFfEP~Q7tmDd1FE?UpZoKsu8!qZbkduP zG2nKW1!dCcL&iqtki+J}F<;tiAk|`FQHBZkgGl-|ck{Pzn^T7A54bty2Dw843PzM; zY`;!D0$$nB5=KBr>7z*krhN`D7AZ1<>H`Pq!}wSJp6@@leE+eiRRKhlC1liHYh&cb zsw2QsGzoy}&Cf8xF!`mH+1aK=&|J-Fo;97Mke{}`aNfR;{?dzMeE8cIAlStY|NUp9 zTL^i!ylz*DG7M4^JrA}C)okM$a12)$oiy7D_eP~?WwG!Oa^V(A31>+O;>+-oOUbEN z^7`VE*u9+JiT1Bp{WB-yfqpkD$5jt_{!6HSyx5W{e$ksXgG2x5OA|v4tydmE^e8%P zFn8)Dub=HH{r)8e+JkNk&|)xmhS&~2Z`^!uJ^aYS6KaG^k>*;4%I|f${DkpDIvjz)`drf0TnHF8BzflW6B zoEoqp;f-QXwhP+Y`WqsFN7S*+M*v)pQ^T+o|f{k0M)Q$wG>fP@@AK(2Ma&TeeRM=B$IcIIXKEsbKfecoR zLnfB)GrR&+V-yfNVk8dWC&lU5v4i{BxPo??d1!17Y07?n!!4!a%E-lLm97R5TyGWJe_<%BEt3SM`m+x)UT_U85gQWW;Qa-eQj4ENvvpIfcVzF9d62mdK_} zKXy2|ubcg*U5ak7Op=&CIoR1MAG~Qr0z|1Iu{!m>?IV4YD-J($6D}~~B+9MS1z%a| zu6Lh!-A&JYQmuNNNi$I&{O9f&T3inbhZAZY^aS&q)K2RS50}V^_Ff8jhk)k$(@=4)R5KX>Vz1(N~Q9A(ne`Q)BRI0Y{bgqr@HEk_%GM6vf9&e?jd?d0A$mQ{`5MXtcBL| zeHAs^I|riUA-?>v@p)0wuI8XYY9L@}@P-`@6!I4V@vGn^fiH{mZMy9)lp+u!Mn7RUjL$Tt@fSw=hWuu2VXSwV+(K{a{_i_^~NG@whxT9HB2{^ zwNYw+_Ga`9FnF7f5kk^1FM`n}R#grOMvW9dL57u((o(f$63y0W!!W$gQ+c&_9(JJhP<*{2izw4bVP*$P^;$OmY9Q4U~qgtMU zlF947BK%&C;d4-Q0|z(&$2Y(Bl=RL9{FL9_jb-6J^^?^?KtdM~=UBZ28q+a!1t>PI z;Sda>YWxT8$^PB_9b)<$v&7N~)#s2x<nYyh0g9|^mcCR2PFQn%L~}e`RLLB}^@?o=ppNO?^)+Ym*24D4W~*s=tic;@ zkg7Fp6`rNbkzrPxkN|l&;Ea7uct!ydS)~h$34of;?M{L=GdL@f%N{_W^t6L#tj7C^ zdSRwjG>l2yzZcf)IRH*aqOp=vh%XvACS~cI?BN`^ITmxLwj-hFm}X_q{VhLQ@RcRs zkw;9d+G}JKpEBFV+OM7a>S(3p{67oOdgl&W_*D`R}4@_*gu+caUqeU*9E0i#r#i2=S>3{pz*GX=Aj+oO0I*FMX|45A!+dX@fihm4y1Toi zXGrNzm6q=A92)6HQW_*gy1To(K{_O)q^0}0-~Y3IYt5^90qf2^XP^D4efk%|fJ~XJ zl2l@Sd?WcauF@X9Oo)}&GQW_19ulDQ1M$L-E3kKuCl(#O&6a zFFbP|ggC#OsadO<=|m67sMY~b2dFUEpO7RLpQ!J-TF<&;lGTOJk}dwT&M(g_C6^V6 zFKAe|wLwKDX29ARFyns|{h##0YYOe2q9!&hchv5;!_M(5J=?r50C7zd-&1pHOQ`sb zQlL?V$_@CE?CD4OcTQbevi|HDjFOC~u2c!&#FpRO%(>VGd|Pbk3$ysKbYxV$Q(b-GWB&ktLd^w1(XDK=76F&f;@J~weZ7T?-)-WyH?=?rKywrNtVNx>{s4@9QSf)q ze$zvKhnLrtk6n{36fNOe)!hv$B>y=pP7YVh1e5gV7yk2?Vw`QZy|4f+JAlG@{Zh%a zk$~Rt&co{!WM+#@>C^q`HnchGmF5ABH+F z`S-k;beVLko34QYNm82GWmg;_;5O;NQ>3QO95!Nu?^!T!Glth}?lDUn|D05JP1BB? z0XxKnTi1rk*blfXoAPWCgP)6J)j#*D;RCvhB^g4jxVR>EJV90z{kA0u`pOl9y#egE znaVBqP+T@YUf(79UGJEe5-%oSz%2?EPXpA~0QfsmRSwNJ%8?8wA%`9_Q z=>kzu^8hqh;K6bDhz&H@^1s{9P8_Xdp#y{tpKMw0R+j6X z?F>rqiWlm(3>kwb7w+wsEFL>4>vymNc>9PlL(9k*kA~>-!}IhYCJgB#L+9^(bRL9{CEb9Xw$zQhB`?1u5XA+dXG>`; zPyI2oFP*782Bhwm&l-0B;@18ib>-JL38?)z{~uS$K7sFFdyOni=~%fAHS1FM2{9Om zRY$bi`DFgyRSJb0&<4##A}W=9`fvUz$h87%8zhL#MnCV>vM|q4&O4dj*?v#XtWXRfSZw?VzQNeu8}>`rO_Qmp^+EASsRy zjj#ZW1T#)}Gjtcmq$lnTC1Us$3e7Tbl1D;|LB$m^DYKD4LLtU@?whfTrK3l^3~+cZ z#8gM`tXTI)ItHdY#wU+ek@j*5^LoSp8>pyEsKOOJqWI1a|6D0MOl%u&8WoW9@%$iU zWiG#!Prnda4JjLQaiOMK0??pe`;d@<$YP0IF{l4O1<7c8;trrC;5FZ$&`~*3aS9I) ztvK6X?RxDFO`|OeiF7U*wm#=~S1|oVG&Ojc>v)-Y-O$=8b>-v6ot(!9vP*|}^4(ty zF=a37jm>l06bfv7%eu>13a7-X)Rw+tFYW3%>w4MF^?JEhCc{vv&V_9R33k{1Y*3F7l{a#TpiQB&_Ak1++a z_6~CK@3=1wwA8|UCZEl^0+MjCVk&@UIiVGBUarq(qYS5gS18yFw*+;+H89^pZ(A4P zuh|aLAQ7#!;&NeOuT%4vR+Z?lSnE{M9NmhVUe4&Za~cFV?C{~gqm3)_9}f~`jwyXu zdDC#%rT%kb#cbc=sNpqQ?miuKMT)x=S^H`I_7|=>nvFUS;1Ueis(MC_^0+&A-3rfN z?%w`5dIhwTK$v%0=*RI3BqZXs*y(L*B?`_KdvRgmB4O8x{fBVV+p*Bb)O51X)RUlY z&C=<>q#L5JqFMXAV+M(loZNyqNNw94;$ZL3@n3lF-_*vWthVMwxiu_~j0Dm2Zm%X5 z<`;vO={*2cp#uJ+umlHL;5fmKE<-TuAdV{25%Vl`L+i*r^x#lfIZyJzaGw>1O2c4{ z=ly2*X@oyR_pc}kz*U}jHu~~bJ)a*G>$lzaxpGuAo|k5s-|bIeSh@C0x)B1N-F$~l z!4F!lE#|D%+ zh0`^(IA;Vyb8jb$UYathXtOYBlK%m?LT}}S3tK=)ddkxJOd~Qu8$x1D(HFbIIy1VV zh@ZO6QKLZky@&+83G=@&G`yxX(8)ai`82?V(<03WxE~$Hz8ne2aN)0u8-m4*T?}QF z0Egpp%U<;ol5Y6L`b&2RAXMWkO5}KA8~PmA9W)9E5qU48Ts$9iKa9H5wFJ2{w84lk zG`?k9q+7uxSMC6uOt$0$RaSh()>;>}qt!nnL7?ta9i2)~<8r@Wl-5__IJdJlXQ&r= zUTAUpEbxW&d;s_UM1=|v4zU_qYS&JImq5CtFwhJbtHjI6c1ci_2bMj`Aj+rN(mBGXah(tysG4N?lPYKajowH-MU)Ca@mMxDYnQdgCIWz^7D zDw2S)-W32m?T8MrZSelvU!M2fK*hVBp83B4SC%@!I^gD4hnu1W`*5-&&;h%q%9iyb zUEd#y3COI&EH-x3X6>fpFMP$`quS=EMQ#^TAegR2U%tQu-q3I1ePU~Ja~w8X+w87M zO~(C?Q;A zr?pNYGtu`a>_uC{h7eEF59f~XiS;AQ4+$pOXO#1XHc@%A$EU;lQ>QgoU!?Xz@rSXd z{OWs5p8ihA2)90wxV_i^)lp@8*s4(22rBT zy952-4)0^L-^6^JC^tsF{CE&Gs$Ay7T_4?_J26mYSCy~RO|)2X!PTjCbr{84OXTL` zbLNV)w{qd)9$g=u%$j)Tn&!$)GHqUWV3{})Sr}s~)MPeZe(UI7PJh#tG?`6Zn}1t& z{tAPuh%FEIP8?kETOdBe2qx^CacA(Tm$rwky@>dW9_`HJKAD<6*ebmjLg14X8s6Swz2b8Dr*v{I^tB*y zqzN5Q1gd$z+E@}EReFf=?hn6sU?6vB?hMDhB54GH)E{zUbj&nAOd9x?Ad2OcMkFPg zH_DrV8!c2_-J_zorK(pDmC*Hk;}1sz9Br78UK52u2Gpil_r2n^^6+4%jyuWCbJ4W) zA-<`OK*sae?-&#TDdOV(=U3BWe)ViZPSlmf&n)8kRli|W(#l64+={G~PYXyFL~FQDK@3fi`^_bA-VgQe0ej4d$YP2i4f1*w(5r>B+VWZ;Xf z@B(~;bsGfy@jmxYLwBjB=^E-2EG&5$aWOW11^5gIRjEw#)-u8LgjmQRv2Khp0;a~v zU-lV@V-0VYhlKLQ-+Wd}ihLME5#*S`wi2@z1qa{(^Z?IDpaX6&Hpbx=jqBAlw`w^a*N z9VoQWH*5jf!QEMB24M%kZedfBzhR#d^XpT$1Xav{hfHnR*d01GysVeZ5cWWH*}E;S zTOT)L1`9Pi z7`)l0Vn0uaV=-7DxJHG8rcKsQ?FFr@RvLP^3(N(D<3*TJ(1Uafuv+RBer--Wdj)&| zMZ8dEDHS-=(>ZV+&_DE8lDAOJF@EGJ^g4q1! z%`YKd&ih?TSwZQ8Sokq>f9!W$pcOKkg}EEDus4OIyye%5JwFMmO{IdG*RL(}2b+Z9 zuJ1Ap9nI#+RpxGo^W`s$3tY+hQmg*N;$fd0x0g%Qmr-Pt(qzOL15&HCB{SKA5#y@u z>HE%w_-dNQ{8b|Or( z9=NKoW5G*aP>J3>tA(-sau8qJ+-u$WOJyFsQxB50YyItFTKTJqLJ7%(KXV%UZ^pab z^Mh25YTGU3UYu?us^cTDF5Lu(f9G!JM!U{}?ulP*E!BB+PyD(E}JFm0I*wS}$HC_a}unc9Z<{!F#0+dTdNC^5hk zjzb#>9MKb(t?xmU9sJ#)p(cU!Jv2E)IfonC5dCtApbeuh|32N89^^Q6&IBszU8XR0 z_f1JbHoJ=^z245K;D(_sq^-zu%=*DdSSP;l8(m$p%9Xb7)uh1np?eDO<44GIwx~bx z_sin-119O=CA92vjK*btDvrbJg)zn%=4}uKCRX(R zP1y3f^Y7rfv`x6|q!;maQ|muo^8d<;Mr8aMPeKbRE>a9R| zk>%haxZWWjd+V`|?e#9>yycU%-fZXFy1?lGTtomIe1P8gOI&OA^11uAK1;x$-NfF2 ze|7sndB!&xjbSR~DG8%iagyX6FX6CclbrxE7X4G$z?_pa=`jvxh7_21#mG+f!+tsq zVgrl8W-4H9cO)t7x)h1-tQidH__7)dzgXm@Ei5uegW(v*CE0L$*;AUp4#M?USZ@m0b;u0PmQoHGlCR@CH#ntKo7S)pMOsW5 zwi{TcALUkN^)k}h^;qIpp+Ej2Pyh2WpZ>NRbon8dgk?S0YTojPURd7vSIboFNiYoq z?WhMIoSgpCiZ@TLpZvT%KdzeXxr^&4AcFpH!Zf%AA-oqE~}&n^$tNE9l|TQM(%&oI5pUt!to z1cBmUQW=TTu1)v>ZnMafvl@P~4toiMBb0i?RU^&ROMsWLuU!TP=7-&Rl0IvnHWse)!fHfP`AeVz7!-sKXunMBS|$!dN1OlMn$_?QCB`awaKu1 z+>w_YxdQ`#(L=*IS6l7ogGDQgu#-}^UGKNqlcI9s&FQ*>f?P%X?RpeXC)u`huq=hGve41BEIcjSX*I#^Keu=l^6M%QmXjvNLFW-g7Cg> zt=wec^f`Vygu4`ds+fDm4*QW|q^RF$bVT6pUrmqM`sw;V4+o!4M|dwx*D}Ot%LC3s z{PMOEu$>@-IYN|8?{qyjF(SN9g1{j(&}vmm7Zp8(&3SjKkhx!aEZ*5-(08(z;}G|Y zTlLqAnx3>9wwe`K1t$iw4Q;vLVoP;w+1cp6Ve$+JqHdwOc( z^Ua9w_mc$NJk*CL;zrOK%inTwdz|>BgC7s3G8WW)q@83CLv0Fc@Lf}qb%A@v`s#%- z&s(q}JlE6s*lcVD3W=YmdgKsgzNpIK4m))Ox8CD>Y4%i|`SJ6+VWkr&!@@p$3!ypw zoRr}M0ZZt5oH35#RWOk8)sZ)G3F-b?&ijh!1LDkQN$HH_9adMIte9ePXV${UU6E|a zik(jiAV99DZ=-U-%+M{$s%V8ISwP=!4H}5@O%=b(QnbLHbpw}?g3Z_bG{`g#kb4ck zq4_lb6wwhtj<1y3{5iW4T(+IvICXEiSa5FL(+-(v<_$5`X<;sJVYYJmLk#QoPqJbfv>ZEw5V&NZMKLpi*8m%{(LeVvwjxDxoa zLY`mXK@eAt{M*SZC+L2)-pGIdNsr?tybf}r6VIvGL8?e?Ld?N52y}8K$S1E9pA(-B}j=1SNt3)ue)8sF<;$Hjtxvy^9ocS=X zscdH|Z2N`O82L5) z*~bAjNSvjCB46rJMLOZP$wZSD!!T)c)UFWM*#LuyIa-UbUTht_ihJ^13$yZ8bYB`- z2v0sXE8>Zt?ABUW%v|pCpG{b)|O$OzWLKt8?o(v?`-o5ey=9;EdX>EM;?;oWPiJ7+4?@9 z>F|ET`xT{Mju{}2P!MKjWeK6ACN z9@edXX8pT~Hpd!})>tv)+(ISzWvBP6PvM!t!~NW8W}*%ooBU9$VK2c!Ck<-5gE7HS z)Wa=2)P83Y@Vhs|9jqc}UQtp6iyEa-9TQo|`my>~b+v3$kUe2c!6#@mrHb5S`FPr! znj*s@tUcN6OS7vyBh@K-N0II|jbCh_iI#q%mW~~VEGVWetCj4$F{Z_K$@6Kj71>a4 z{>@ur0ZLD|8=VigrmCGXcH&;M^6Sdy*)Z#q1ynI{%`g-XB&CE@B_B4t6<^;*dKv0y zth8XP8bv*wyYxBx`e$IG$t`}{qEDvv=)|7-b zBuYz0($NgYtM4@RY`()6e~%}j`zgqTICMQ5sHl!Y1qz>8=enzxi3d2y!>Je3~?ZLpnO zwor4y{}q%`jCYt`q`CMH7kz*e)&FP(WuxDF@mr0}c4TB?VxT7=Wa5{snLn);6gbLZ*TJ0XEsr!$;b1>_(Kz>F7>@{KOQJ`_+3r*9dHRF zhV<(R_wR4*towWk_DQ*N1t#zX(OoR`th@pHwf16)yn!bh(JOVhlMZWN#HrGReAor} zo3t4^!L}vP3(OeL(^w(mX+|aG?B(k$-7uh!3ON3EGIwbf@j9q{=P7cBgvZ^&wpaWy zrZsE%!2KW=Lr~`V?;*%AlA#XL4^N5Z4$r%hKX6P@y6bK?qLc#`KznAH} zt{%U+;HdxDyX@_xT5%IQyOHLWZ)x*_Da*|p{{1a`TZBh`sfvF5=;M*Y_ri>?XFto~ zfFAw*)Ko`o3wg+IoSvXpDTF6V)Y!ZwvB1`W_aN~t>FfKa+1=ye5167Tk|XT?+pSiq zydt@Tc@J^vkgZCyi0*3LMLKrKAe1+yb7p(x{YaQ`zbK&5?{yYfF?RTA~EiL|`T&VdKf6dq}!=SNPtw z>8yj9fe$vcsY<}9^5`OzbG;VN#0U%DU}$oWY(^2|rI!ZY;NcSsGkws}vLX~cI%ozu z89P?RW;lSw=Epis4CUaD!J@j?o`-m4wOq1nGUEummP+MFF0a)WUd<{}oGWDa#1^uG z0=MHh$w}L=gvY!8our9fLEG>445yo-+^S7+AID+)JFdL6klwts%(y2IvuI`YG1s+; z+=)nnec&dSF#k#mhoRY^;0N037)yY{x58SHZ+#4~?OLq2x0ka@H@v$Vi3dH?Ok2S) zjQv~nAtK9r9;OlVK_ykY3aWiP%)gTzgjA>8+jS^fG30VH2+6_o4X*3pw7HdC*A$|I zROrlsM6;B5;4U_<7d$_vM37YA?$-8llMa2Oag!%ofufoeiQq4`-}I=cGD)t?+crF5 z$%*2!igc+uLyaT!>5G*UnTBtmN7z%HDMwYbw%p(Y_!|001inNUS6kl8MP%Y|nVbOZ z{%o@g!MbcWOVcE;qh~QmZl^*nD$+KhJ9M%5re5)Iht?SI3-H?qIhM-I%PIO)~er{&L_=z*Pqpx&E15mQKBH4e39CEzS! zOq7#W5O5yvYhMdVuO}}+j`IBk=ynSWpEC$n>MpeA(e6EWr2zaw^J5rb4#_dRoSEsi zedQ#Jq>n2-7)M;89O%ik?&k~12r3}gs3;jlB$yd`t!4rD1#C;3ZyEntZKQ;`K=U={vl>UVbQQ#Q`*Chh80c19BW=9MMeoUDov?IS znd-Wid`%IPb*V!o(wdQgg2B@*I>;seb(~X04hM>W;}XH@|1G{9FS@if*f|Jq8^@0) z%f@bdE1UQ)@t`r3e>zg1&)xUDkM9a-J+r#Lko&#DTqAk@@^g$X{le51Q+O>o)tE_x z9(;y5F~E?iUBPHpZ%8yYUx?Fgp#~s%kzw_H^d$FcM zz&1YV@>(SRM;Z3e;aXoG9GydQ7-Xw6177`gRQRc1`_o2Oqj(CZg2K4%4;ljz0X13; zL9>h&2Il4C))d`8<|O3TU!cX)A)h|=wyGn#+S(QWm@X%^Bp?th1e9I$cJi&UuWaGi z+lo-$@4Xe?$2)x0wqO6!-Y#*7ym-qF4P^MQ5HeML;_?bN zj;QybfFqrhj5JfJ2M@TxWy=t*qs!G+9BCUe4h7j8Ig1VV4%Z_?$)AOh0`NWzM{bm_ z6(y)xmXL&i@$u^zB<3^+-APFxu`wCp74qT)I(h&t&<_^Y0*UKKHKhO(%l0{ma>ia1 zO2fkbfVIPAssnynp1X2;Q^=Qwtxr4KkbDvdN|?$f=-h;Oa{!1`-5%Dh5%D`7K*0Fv z*YYl2wbhu;{J*%d?zO00^6XJOt`DetwNB8faa+t&Kh})2szp z8|Fj}sq+bmBJ*U5&DB`S8!z1P4S+g?G`%?GT8aqfcf0(}=Zza{x)yb2R^6E@=zlWP zO+y{9a@bly%Y{C`FwMcm97wz9gjfizU4Rg3gYf5r%jK*NTtxRYBQtRkS9qQ1*pN)y zf?P|{tIYr8y;Ns@FDDUTmn2=n0NawDVcd_&3cZj=n9+#sw812)-hZhoQw=OBIzTzo zC?X(u!K`JuG>l^|ybuYjxRVfyJk#|#wR(!m>}k9G4yFO9_-Ar7si?p0I((h!$ZqXGyJo`xD+%FJw!t{ z{V=@jAjYk`&tFJ(4_h7%8$?jfC5|V6gg(#IR=Lvsfi3sp*_)}b`?mEUNA5i^p&R%K z9YOq$e~-GokC$_EkVfE|1DY`6W63=uVQDi`_1q3f5JNC=5=~$U3I;NhckIx{`6-ow z?m`fO5}d%{e`Ae6N3skhF z1HGK&x7X`IPeYWjY7!gWwoJ%AKG>fo54`2!#Cr%P*s zbRS(R@H`jikKXP`HMxH7zUwDpWEkN31KYQbU0*}YJjevvb36o7P3Bq_j>e3FS2x!% zWXIeOZf(*#*RS zFTlVP-&VwsM-~R7VGZ|9)?Gl+JII^4hI%F)i&C>Z94yaxc{9!X<0J`rau2!86~pu7 zFLC?w-!PuC)yr>#>e0u!Zj>py;1^{JzgCH3QzZa5rxYW1m>c78j z$jma(>mif#i*tsab!1y-Y0B9G&Ld zZdg z8JRJP#J7*n6Ga3HIo8*Za> z(eyoNl?CW2^?!(^rJczm_X3CP`Ip%V+*EFP09zSGV2O13*C<#VtOv4&9s$u8PKy2- z1W1LgqQK{A4Pu^6xvXF^saza%cu#v4(h3q5@(w(z^(UNne~1BHCBV3(EHQ|iyExi1 z75EPkPqLK3BWc|S_}VacaiXD1RsK{;+nT(VJtPA_x1aLH1qrn*NsrnLwETN`bEnnt zk?|N;NwFhn}q4g!8Nh>SLdf zy|8@Ngm?cu@2seL@sRLZm-jD+_Hze*>q6hyWZnHrE+u;NX9|}1&e7Mt5s-fi`EY1O z&tx4x>4m9sSm`#(23TiWmo2Q7*sRL_{7ft-V_F6sA$%);BfCYcg_ChcW4E#0ml6R^sxd3P7 zp-a$DTO{eJAWEZv{9@qpv0x-0@ADpCQ^F`VsXr6|yzPT{xlDgoR4`!^&3+QdF9LF& z%kw@+%c!gF&gc>U{n&m-TyAukBm?!ZvVy~`N@<%+*+1B%Rj&|sX6akDb+3eYaV67J zN^UtMe_Rx0*RfA@M(|a=aHP#`Y-8@$zED-N#8QFgPn8!@&ouTmFow;Th1Wm(hTWU$_Ic7i zKq|P3BHx^BDc?MNKWya3>%}HnTnVaiRd}M8`jST|v|GC@hG)LqVVRe!I4;|XcOWSOm-k+-;WwbuxLr&gB%ob9b_qr`4e0%m+-)7xxa0*>$OdB4@_0(Wkuq)gilC4m-y z@I%&df7^iOGKL>>=s{djt%9o!Lhyljfp#1HYJUziYO~ceP;6+toE`N%%5ChjI?4;8 zTO4iE_cU{P(5>>{*u5|* zaP8RMU|!E73duFOMhdrOkUYSh{}0n#4W)A9bhy3R-Iw;~RLRYx+0GAf>Q@nY(W8gU za%js?d|@@!MKlzAyMZ0PZ+7a6bPO<(*dJj@+n?G8x+J!#oI!(-JL)ae=VPN+svL-K zAMXI+1}nMW-mjbho3|-;*kvPoAI^h)jZJw%teJNhcu9$g(K`#l7K+2sSMn`c3BA<~ z!QOf8b-&Im#f^!5OSnUw!21Dj`rwccLa-XAc1p7x1_Losu>3g64sveQgQHx4h(46v zWq*2C*bqvVIEQ`UiqyYl-GjE$V61|QHLgzY%ZDa460SHeSIDepe!L))%M)jkxw>Vl zgY=K?4?5_4EMHY~@b0ga-0jb3PTs@T{qgOx`3nEW9ZSmZ%@;BpC?-)m~o1e(uvMCG^1BzQ0LxcDTevAMX)|BA>54 z1ZAW~gWny0ZR~f;pOpu{CPW`ws zN$zJQ-v!n5PeoyGf}ELn?1+V4bg2W0MY}{E*F3(1^{SMo=sn}LULvW1_PPLDabF89 z`TJh4^y4o#f|ZKtmuuV8yQg6MC3=!HZkN#?<2MBaFR-CpXi}0X`zD_iKdAHd-~>~C z4$Mao`*s=^P2Y$uR{nW1_9q={mlhRjU7X9~*xN!%z%lDu49}XvI_}xn*qfFz{2u-;^H4>oMZvC~UEG8`s(J%X)T^u~UJv@y0`d&$? zBd&0QR$6nQt1D!AL+yRnVzP>g@4>njXL}LR%j6*jxbw=>>))9bwM(Nw;rE7Xkw%>& zk&F-ESA&A&xug3Dr`KL55i53RwQ=+r4?vNwM^m9AO*0j_AFMhjm_VI=UZeO|4~Hd1 zO1g3YM)(3rvl=-s)*mdSkdDLzPG)9;%y=HS4{(O$80vU4EapATlIF<2XiNX*yT5|r z!;QZUhlx-U0TP8g35ph%%f^7e5XTlaCw)1>3(pI=R;`c#0)YNT$Aw#2M)?n~e%6QC zo&L z8S&5hPF|_abQ=&^$+%tbKdMtq4s4vU@r*IsaoGe2WWXWqI2#?45s)K`EK$7VSfGNL z;Q5oCBeZu5vt@8{qh3R4`e`JIy{YEE)Z?3J+il zsXLz#<&WXM+p4-QIv~L7rhFSVF58CnDAE$2`Y)941G4DKQcAg6C4#)}(NoRWqUPko zDg?~%-Vg0Um(Tj|l!q_`WQ4I-1tS&#!E6(-Si}3Kr!Jh(e#C30w8ICSQxZ932lJ{^ zF_3|)mU*o&dTC!|Seb4(m@jaRf0o0WG|;9|y}a(s?l;4n`gHMbD9=};XR9{o zjSk%JFYYOFdd9U3CEwS>!v^=x)PP(3sDwn^*Sl~GLm+KSmrqO8zlC3Wa;J}zUrQ}# zqjbY?KskTU`%Jo#mNa$47wG;G63XY;_nEFCGK{$x%|z6U?3xRQ#n_lk?DafJzJ{kS zagLzA(i9_4)^W7b_E<&z%68HMR8^Cp2yLR6Jlu#&|b9X%MJY=?c1J+vqZ$wM$nSn zom30{=Rdv5JL@Oy>GBHwy+XC+K1LdqeXA(l+}hrm<=0KI9CHG3#b>YJDj7BjKA!7G zBo?mt<9|0hcprWQRmg7Av)Fdg9m*>TqHZUySv#$0dHFuMkFzQUfc4OeiWz;PXx`x(bcJCC zoU}Yp9jqyJOTG(UdELRyUzz$I)G!&MHR7~G2_s|dm!RGv8!<%lu)A!y572|21X<<6 zZMO$+PHgfaH+x#Ab-Krz_V(MxBT*|*MEKdpj9vYAx@)BF=XKzbz`#vO1FIlCHzL6K zfD!j9Y!=U5;D6(p62B?Qd+mOIY0o-Trt^titXH(>*GkM&7C&2#G7Fi+O z@5Pue1vmu)q2kp~;^xHgEEQ5pc(#u#Os3E#=F?&*4|$a>;3$4h=obB zg}Q?C#t;#>CH3^9M~}~N5a3jaQ{#fRpu8JhE8byvA2}*>=%_t(zu=rW>5?ds3;inx zy#)LxCEWJIa?q8xu#Bc#t31_e?g3p`f$w;96eE1Z^JZNan%#G`_Z?|0n+*FvlU&7R zLC)J~_Gx~qlfTk<%!lEN@s1dISI|A7SAR?Zva3CT{~_yC1{Y#a`Zcy(uT7D2~|rMXG;1b~Xb> z2P04i;6AOjVJ8NKDB%Df@2{q+s!#(}j>?iIm^FvxUFY0s8tO8VEs|iiplTL~uv*bV zmb%4lkfY95Ye96mS%CAYU)X~bq2p=hg zE{epvG-n%^s1Lk4LVrJA=0#PB{=uG(C$lobtSKU4Ro_&wdQwF)j;4^Iw)swppXC{O z@jS$WKPJpmYn`rL|82|G2MvgkV0yOv@rc&_T0lsBM1ouqsHChl`AF1^8~UFwuK8`Z#AXjl#RmMC9&Opn$IkuZuE5El zr~`Z?6!>}^dT!b^zS;`L4Xb@ULR2k^v@jUXD+8`Jv0cQR7_8G)xe=~K2UwMUw&wc0 z2BH6OTruh`&H_fL7v>Zy?PeM`7jF1x4$37(fZ-)r5NhHg{Mns0k!Ag#>_a5f?m=Zn z(o{+0t6&RQWMx1P2aNyOYH3s?Aa4KXWd7T>r1z1@IkZ!RAUj8TGYAmBYO4aO0pB}d z6RgL#>gR$wzk>6=BbzHq>M8;UPUweg3HzpuCDMdhuCE3A3CX+0#DtweFhIw@9rsEH zoLAw2tnjI|PM3VJ2!ozeegs;C?Baax>A$2EbcbRK%a=ENdS3OT#Zmm9qNn}#oybJK zSr&_&uiGiiq&-rA4wk+hC!5NC##xANu4fufEHaZ=m>CP2Xx=G>WpoDtXExMTangaC zv)cB4Xou_7pDkD|5QY+{sa`M?=ariXRrI5^8o_$lR0ByFdrJ-Jmt2XnX;?!TiN zY<9dc0*q3z*YPg$tYk*&LxGF*oST2E)y~8oA->mrKK!l~-OQt>+!mVDiJziG=_PTw-dk3j^#t7vQmS5H+jh zQIT`DxP&$A{3ilPXL6%v6|>TbSLwP3_?RFYo=8BkZ}OMq2@a-ZfY31ym-{=&eKHp4 zOg|{E3BP(r__U#@3?(xzPSfhSZ>}n1{6_I$1esZ?Nu+?XB=iAjr!{lexfu`8i+?v& z-vId34 zE(HFN)B(Lqe1FH1X3NjNbX^q_FY~Qo|Bs6nCPzzB1s@BZ?W}(!wOm_QXDUJ{mF{$} z9n7Aj=0ZRF=g`3!q)~L%HP;=HWD(B+T50&HO{gH(i-$-VXS1dd-iU2#6ky*(2@ANA zDW*|5N>OCeOmq>EO{nW=;gu@1lV|G=TE?mch5OA4T&)JDe# zZsD(gWN~)$Zu>{bHZ{=^yFHbyxHi6;$I#`zFEcUVv_Axl42%45Cmc6>QH3~F5#K@% z=~QItbf5#gM(FY%dPvI3TQ>lLR;=T?a^17ApJFKAhpO9QF}gzjzh3Ikm;$`g0GyCm z;AK^3xpFPCl>h6BlV4X&WsD-sX@Hd$-I@Q*FXzBlK2Ul*zA#^XI#Fy}V!|cS{FTLB zu3D5>mp~@oy11so^XR0&fE}1cvo$^SVl9pFGQc3S&&lZfKtOi7M1}160&{W|!C!oq zlipSt>(sCVD>?yyIo^wj*}YUZW6*%n;tKnWk_t@hAOzeaqTDmF5t9Ds0u+kvP!(qV z??>EVGFps2Z|%O+L2pcX_DE|XSGnIQ5WiRfT@AH|Wnz2@rQUfR#h1*_;qyqx^|S}gOYiKXD=#5oiH zcmMMO3@mNF2>Ct?E~(Hgky5{ z>?hqH)ghK8_q~HoCNu(Qpr1WyKVCAYJ2cZGn`s7#!S<^NiY)OHCNLG#%d?=96z33|8{Mh7!Q zYg=gvgrxx5lt8yS5x(o?c-)(P;s$fg`!GZePaF!N`B+?CX2(PiBX zZP=8so&Sfu`kW_}Zvo}@hFhXd!&PAm z3LAVe3&lP;BrYH8^<_o=5=B<=Q0AuRM981|!O0ke6md3)bSD}|Cv-L}4n>031Wl(J z{;ISX^RHxXr2hGxC3Ox>PdM|R+tX8&B|5;Bd$>Dwt^JgNJkPHXapt6t#(vTz{VjUO z1AvI4yY3(5(P>d^_5};?ip-Mejfj#`IlF1AmRy0O0Hoj&e&4-hov{|YC`85+->#gU z7$@d-f1q0QV36EmqL9hZCf^~dkr#gDvBo>5cd0)6It^$BWOc!uOZy$>fUs#qdG#E3NIGe1&A3nv6|nQddN&`f7)``G^rQlN1&qG5zVSfr-R({tVJlpH1Fhgz?0<06PH_H?R-5#t**KWW~rQo7{7c;ir zknOm~qQ)g$0N;)S)UXk|pzsRmy(!R#^#FD?Zm}LI1|K|1m&%u+7HzKGR0nr664RdQ_ z4`L%3@RElI{znhRwp5(EA6OJrh3z{YjNPm*W^qYLqYHWbg<_3*VuXB;QY6!VYpYt(4B{W?a5;Q@4<4E!zIT zz`$TrKaYa?|3}kT2G!Ly%^nEu?(XjH5}ZJA3-0a`2=4v_cMTBS-QC^Y-QD5tytlq8 z@*`EL6ZSr9&GdBl%tS1hqSq*s%+UJX(!%P3>nFmuSZQghx@zVe?fq=B-&Lx{4I?~m zSoS>83(7xYi<2c=Z2`7Y>r0GM!9}Exa#wBOicM3FQJYT_oIN-PxGS+Z!u3DIR>fuq}@C#~IJnj&|{@eVsc+cdp@Dq86a0@L_Q;#_iM?SW0S z{)+ze5o|BYURw}>VCZP`_64Se??iAPk$s^a8o((SQLmYzE}pW%C3vA-;s2U|{{7+H zY%EKhs7Sb9G1qhZDYu#L{?kj=?$jZ)n~g!f^gA<5*>32h(BoL6HCwlB5Mv9sU%I<@ zi^_K*FsS3$sD}(jEl;V|xsPZs;NLzp4a?9bFRMHl?4_Lw`on|Uv!UkB?ZFO_!Ea2X7N`C!Bk zY9t#pe(2W}8!{&Lc0iTxQPqpwfkaIhsQl}A0HHA9mrA!3AGk+e>raiZr{SWs6=o(w zg~5i&`Gs~D&g(jGM^;>3Iz^gA|BNND!Hddm)puGN0 z^Id7~MDPFuQwRb@!M)(@b?s2xQQJ(70{ktCDxw2KB=B1@Mm>AS17OO(+cAkRjfZ7?`4Y3?|c4f?EJKyWbI4&;+Y{6+ayHri-qI<-(JQ3vvtSB@&N80Ajkj?4V9V* zT#5SpE!Q9rzTNWzBOH#q`6#mb?86&DD8DzpobC@r&UxrX3QFeM5VBQXKwmgxh$~dU zLE&#+Gb=TaUE-glEJT$lw|$mDl^G8-=DmBSFU@CKY;8%q1g13e0O^1{-%PF-h7@pJ z*Z~e_ko7C(0$~>V^zkv^r;DyCYTeO0;#$Q94*)Q!^{Z|pI4b-ZGlwTyc@z+Yy0Ed0P=sW0Az)dg zSB~?UE8+ssN&mHZUZ}N{NV{h1X^hmkwWS=Hb+Nd~G>)r_es3%EqOI4wdzLHikC1Th z!tF6~sxZhPWoSdv?|0tQ0`u}j5}9FRVfX@shI5s;bVM=f1(1z|$*Zm?f0}JAVvg`@ zKeKO1^Gjz?b4854lF4__+D#8cEMHi1AwdR@Cr8>TZ z|AgOqoE3fBr*AD>ZKidNcQ<_*-iA*X0>1 zsL4ezq#qP4l9F`QYJPW3Nyro5Ds}t)cuQd9nTze$+2^ClFJMv|%tDi8eU2q4ar(E^ zHHZl2LS$;*AMpB%<3Ri%{B~YwtAZD^4>T|2&CUiZD7w$K2Cgp6{kG0vdehFQo<>^A zYlT|#K1sMcsP4@+^Wz5DFwD)F{E(INU{3Uxpndqc-qdSd*|M52FzI;Z#e4SHVhE^eq6XQswUykK%;AhE*>pg?of@o^z`Y`&c?@dc9NBWqzFJD zXGK|?KBAq6>&?5H&G!8$-ccy!QZvj}vKk79j(ww|d4H^5I|N#BZ0NqkgL?@wA=ruf zp4&4?UauEuZY+6&5oeviFTS^@Lq;n9a;J>}LORfv6*d}9-NKKuVeoR{HjsmHTN0ur z(OVYhD$z*kffcFz)%8n+Y4>2Y+M*FRInV+3O-o{cWg8eg>A<_iG_CPLjFsdgoOg1~ zn3XrqMY)9pc|rX13BJF9HYA{bj{peF@$RH&r~ZM?Huo6TF@FG?4=zjwOl7b6B2lFX zjQ=FANGLEWjmX8-X7xcW9pKBZ4(^iy)a>5{yR_~NfbW>RAag^Vo16X1t(_J(e}H}M z7wkozdv7N%{wXg(Edmp`Jy9LeN}&oz`ZR8y?e)@V-7;${f4aHNiHf`M%5TU1Y@E|1 z%x#wTw9>;iLB*Z}Lh@LD8U}jwnpU&d^kXTncYZ+}M2J1RQA7;(kp60lQP=}O^<_Ca zurb_BAiUQ{QHlMJ8jYWOyk%SR7y!OH2cyaT7i<(Cde+c3qBdo@1prrN$e*pn0jLwQ zDBzu1Pg4Lvj3}lbc;_z!=Su7Yr~zQ1VPK&!UGU>05m&rw{TX@t;SR$bxmp-RF_4P~ zN>KfE0GS}R(uS#fiY`HLg=JqkPuHY{e>F;k=Vha>k49JeA+a_uzp=*XfuL1xiRu^*YcnQ0MpV_~2 zzyda@v&+^}Ce9;3_R&!MWW*4M0{smMh>x!%FQ>Ymsu;BT@VO89AGIvcr2hpB0M!IQ zb~D8;0c`pI)=VmF3dB@j*#V#JntoY4%sr@e;ZdYJ5l9! zYQL=WOodp!gNw85VX)RYAy{MeBWexkD>84T{Sm39(F6x#`qH+|yR-`JL?PQx;L*+0 zFacGns?^)}vi`r57TV<{8#u9s*yTPWCm}_LFMfG)Ku1V~?)obpN9jv#O4^{j4H_1W zM~D<4!Vxds@_2&3+tSx8vNiugWX}BLV@NxPa|Fy7Ow1X*QkO60D9T$elm{Ck8kM6k2)M&-Tb#>-xLcq2LYX{0n z*tsti?lN%rV>1Xb%XS_8s3*cvn}FZi=0F4#UOp#RMO`RZpc#fxMemDPVGWBJqgul= z8u4h}n}Jmg(VhUUT{hSUWK|8KjCEZoZEYDM19em6aDZ9j2*U&L zJ!^_}VPD?N&H(hwK3Rw{2reerO|s#yw`k)sn@jH!*PxEPHWOc#GMZX*O(PsbZ%;rl z(7&x`4l-242CTm{ApwBrs3CZ(;cu`;#V_uEHcL6BjMSg42bb8%d6bQmBR1BOz%l*T z4Fd0cNg9{N{M_P%3jwat85K8tbf342RS)d=p?O^i-!J|5kAP2)ALRytf~J^1X7q)< zU1!njhkLQsUAHzg6y9kef97V0v}StH7qOpc#n*412GoW%9l&<$cFZU(p2jIVt#TFv zJ9z&_8Q)6kuqEy~wLBfhbI5ETw{be4AoClL!0=(&Qb)Pf( zfd;&9M*kfWfqmz|es&A_0VIX{&7+oZ+JD_!4&i~ z%KW1 zZTgtG)%hs6C+&wC)jz^}IK^A)tXyOTxf-!P&o~|*UPx$*i6NeN3p z`gg(Vd-=S9N0G90+!Q|M6n=CrGu|e)o_rkvH2Y*PGvy<9B~7l8H>ws>1u=ojoRLwP z3Db?{y(vtQbk`l;m$_fp?Sn_0l1tJ1Rk$NcW;CHP<_c+kVKB$cS5iSR2x-To#vDxkz-Yj0)9mi@G4c3*Xye%Vzsdsu2%HpDyM%@)SkLe)q=wH4pDfqFP zLG=T%|IwWre;`};hY45LkTZ;IxW-~V0rvsI&s@)v3OF;&*j^%GvYIGdC_=V#%lY=Lp+RPa%d0k9KgT$($Op-5qCWomeOMs8vx2=> zYj!`v>6>r?)Ao@a=gQ(G3VP(lUywhKgOuq;Y!tcUrPxelMJd6Re`o|y=L~2=>o29V z0KyF&N222TnNG!D56&`A{1JqQ-<9$aoxEkPN4J!dvQ}z*n)fOiehuGoIH)+5%yP*4 zZ+4282JIKLuDfceulM&Sr%q2pLKcne#>L94H{xy&)2!I(54Rjn^8lJE7?*rq7l%eLvvwVC*Z2q9n>g}~kZeM3{xH() z56E&POg;^aRtn8>oBAg=9XD##bhUN5T~7+Tcz&GCO%Yv4n0+BCsqo_sJlO|rVM=7& zhmr&uWlevdsx>Ijh4Go4hmJ+rWHwW}_GqZUa~`1SP)9J4e;0~E&b0frgGWG{!7X0d z%Z+En=97uhny)9^;C@eSVt|Rqsb^P_J|zna*F_$7gs;$(&*}kDy~Wn{mm!}YP5f(; zq5AdTd8;l=$Nd`{n1m4D_32l4*}?9Fq*h=ANV33oMR5?m?-Vrdk7tSMc&BF@V_YCr;MxHkrZyEZLS~fDJu0O8l>33dek7~$+mDGUu3_h zM|aa*&oZkOmI*=XP-X2oU2ag$D6o8bqCK<RXd>_xs<5IXVI@&yFhS%nL3Q zu_=pe*nF;j6eXYC@TkXOGbw%AQYjPUDPkyeRu6`KN?J~OdzvC-I#FS~9{&#;z zA5ja1`}bly)j-F@X7od;8Z-Bw7pE^~t#I3tWf4`ibADlmiyNDCpk)Fbh&B@60klelJc9XzxdehrgHtDY(~n;k)(b(f8Jb%u`k~g87k* zn#_*!XYrT0kj$>%ZL(;C7JPobUFCi&{lE+QXrHN;FNkr#_*_}wRDL^GW{Cn0SjVC& zx2bnOt{K~%Kqyo@*Y-Vb+}>|o$HS>?2GmJG+%jF9cwaWn>yF}_Ssa7;#O@O2K+_|+ z(zF&aWrTP+1z+Y3p=$JRv6+rhX6jct*%3Q$>r+aX^Cs77%x`hFK2+ldD0ppbqG zT;P}eZIU2QX<6tnlt8&2FAC$YVCyGiPNYR<$GM~#Fpg3GuF;7j(-azBiEBGXQ^~IwpX^UNDwLN8x zU1jxMdCY-Y=CqmK74pMJkN1Cw9*c;wsa8A?-}%4{YoUMk0ROFa^=Z@L)&XWL+JEn$ z!atrTxV|XZ0fv8Jy4fO8zrDQadUKULB?K4CODq(5kP`s*+kS~^(n0yYML2e&U^F_43pu1}M$cd;0s|e- zl%<*O+N-aAG)JklmkCBPjAmqn!50lI;#Fb=PwqslI6M$%nwWhB-QPP|YBA@L2dx)M?GztpH3+m4Oy2c(Cm3)Eb z8eX%%FaI%IqgsRQCCQA)ZC%cCJjP-%vMXVqM1n) z=)aM-32|C$KO)t`UFh=Lij8hL9U=eIJhgfSc6}#MwcXEqk5mBiU*<6Hz##_cx2c@VC5f zqwm_geDfr1SkUOMAQFBSB8H))SQGj6a9`d5#=wPdsG|5D`w}CI4}5RT>q62A0bi6J*e8yNT47YyvnM5!{wf_eupxhgAkVJ;$r`6wEwlmFf z($g$Y+m;70`SL#I*Cl1X*<)PVpsrH@xL9ksl zRgFN8x46Im3{2ic`teR?`DV0s9%#EEqM=jK8dAIgaA3=cC3T~nJV-ZaP*7b~%3YjcCYSII>ReR3NL z0t^%^^`8OG{paT8!#2H|n+1>COmClKP*G7Y1}aLC6s0Sy z%L=uy{B|lA`+AT_E@C5e}iByRjbVFJ8z{ zx(?5;a2;{nkP(v#d!ydB}23I^~k_)}bbOpOVId}OB zUE(nqD5O_Ue2Slge1n0;%nCf0mE9J#UfgKxE>ZN8dhL1DTo~% z8&&K-%N>ce?LNhX_|x0Iz8VeZ3EYjxcC~ZI)6iA+E^|!O}gQq6K>8QIY-v z#X(ivzRkl^1?i?x;9mB3uxqZiL6X3riV=BTyH7q-VKT5A0!L)(WL-*;aHDNU0`4ZV z+N|;ocg&`|D&^|gkJ{4r@9#sF#lJshR0`2UT_2>)s3Db zS}9Je8^LpSy;}>03}p;%Rfo5xV>sno&plJN3@c)D~DCAk_&-yZXmaEjbec?aM7XZUam=;DaBQt z!Co`4c|Ot!#oI9_q38HA_^YXEYH4@u@2v#1`~`?|+0efp?=M9P<>EA0*|bF8`itQ_ zlU9!}`$Nq)K!kkINySle-sYsT;1@rhL`GgA@_jOncmn)$&?U=ZBds-ZMs|kGm&i|S zzsU&0gRUc?6K@CFeR+~R>*+y3!B4J|V%I&9tJxa6$zcEI1>omwmQEcuxD(Xn)Ry-}eL2-Nl07PgB{Z%N@;ZU1fuq0wC zc!ScX6!=yLow~H`5|H*PT_4GLIM}T8f7H7)fz>r#V$cUlfODx3u z$o2O7X)jB?pqKIXB5R~%N+OV4V1dhiAWJSgDk`-OD=64OdAbg<)=oyY4}LiHVwW8D z(PHsOGD_5o;T)A+^_^6kN4qIMS-?}E}?JrMzYy9M_*95WO zYV8Bpd3+diWSw1CjMWbCzKb>5uYSB$I$^P}lQJALfkf-~TT4feA_9pvYaZ}DwKvt3 zl9Wg}L7Ez7-D2^m8e-Q;hR#u*7MR*2@?dS#r#;b;x?kdgkYCn43Yl2LA0mua(0%M9 zxJ;f=5-41xjH*gh|IQSC;@VVceb1lYs#=T6H&e%5GXais&;?x?ZwrG-~co z7(9Ycrl;EC&h#e74g~?2=Q{F%=qhnR}0zdSU>pp$|S9cNkySZM-r{g9{1VLWxzMV&CN(L1brmK`WNMtkhKuWEMll z6ik)4@T{)~eCG&rQlTW$sRuffneIGWbCfJu8$C&_%3O_wVyHR73>f^Jj0?y{YXhh6 z;57rLMU-c}|JeG9^&s{=241$l@#2k|)7^L}=`8paEq>s(2oj>0qSh~j1bN>Z5XVd|p{XX<0Hrch~Jgi&0=m&{n?kWuV+JghL73o8Qaes}K4DTY%lr?wZIbY_$< ztG|PY?~r$D!MOkAIvn8LdvtVAo$qqsyI62hV68uCdv7!KE6>2{vyg5R9iUTYAO}^? z8L5(#yoC)rjp#jyw58<5Nor_HrRnqf&-|tkpcp1+-xHOQl#cimWLVc6C#e_pXJj_N znIyh8ugm_80v;_3pDBwBlsQ1no1l4`ODI!w580`@j4o@p3)_c|s)Uwv!1*(V#+Prs z92WMGMJDMV035|%phHpHPSxVY2I^+2D7BQ5swTVsrpM?A)L%{ygf2fJ?1V6n`?l@|*(KWQ;CCUS;hn9;>gq67+3ng}6K@MpGJVWI`Y*{pR`fI_(nGW9%O zq8m;3f@tYNbQCSGcqYB6C%$L!-ijksw4*ll8VCh_mRq{XF)2PZWgS~sLE4SBz`{}( zrnG}$w*@Q!qc@$gvIo7xXJcN-1Jk-Eoy~5!zRm}e=`mZeWvHgcQg_7knosRyWRGAQ zBei%E5SG9};LeM={Q+3C-fJXj2pm_f*2|?B@pO$fg#Rw-2uDq>gAD5D zgH&JVxK|ixFP+VU5izYeA6nXBBGA$h_|{Y`Ln(WAjKP$8LMQeLS^>hw3%b2Yus0Hy z`+=X>Z3X+QW*p`!xv=gS$59o1^AHt`Um-YSO0t~0`qI^)o<9Y3|Y3RRT zor8^ca}u1+>vN8(Hb+JPI7!ZUbi5$b7mvh!kTv&eXAepj7Ny`wl%6_`7-M@*nq;_S zU+`u9=YY(=(m;GmD3_xV+xai>Z*OBxZb_dC0ToP++G%x@+fOlYz7_C6<-3=b_<=)J zW(cW5DGdw}dE8@Q!>?Yl>9h3R!94zl zQOYwn*qK29!iNM}UWl&@3{>xLf+5%N?BNh9&(T3mp&e}9q*;E*)Y~sg`Yo&-bq26r zq>-R7r1#VddVv#qj+4t}=2+4rFj?|rySm9fU3lWY?FDa#P$+}xL_@7!Dyd zrgosgl#a;fA{C!pusmNWR|J!XCi+l)93Y5Q2k+6~Dv+m4~(OgRmOaGbm zONAe0Y`vTO$nMU7Ap{}r$TYbfUB2WBtK|>O<=Yhz-S;C$JBr6jeAgcS1#w-2joRmn zr36CT!B!0E%mW#T`^F-^>kzzndCV>FNr%z!&c;(T+AXxP{~N^yU|IY^fCxvkyjV2l?d)Q8MDQ`Eio0G_n;|3CJX0w5 z8Ls7QvK(9D6qf@cKx=X36CySo{IbKT-s~NIKB~rFTtTM3=zRp{ZHNV*J+#AzQ8yKTbrhT>P)L#5wD$;~bTAUk zkdGxw$D*;|mTQ)kqSbc+?Xb_7x5gTipj=9|cU5Dkzwb4&qoUZPI`abwn##n}yE|OQ zx_hMX9#?n*xL6sNf{AlCr7OzmO08wX-*53$Q=B&AxG>Eypw<$lr`&qmg+#a~`=h_s@cv^kqArj4J zaXvJ%+v7JzZN#84XQGxyACe5(1A^x?Zg@|jy0LgFB$BROl8`=9$Tjh~AS`AZJ%?4> z+K+6tMAr~n^@Od;g>&AA|FNHi#KN~D`u;ngYJ5l`sa8s?0gJJ=q0BqDxVyYWk4!!o z^`?ltKV!Oc;LW`h$WX3xdwv8{*3;*znKy!t(oWGH^jNg!Bm2{zaFW9Q+}m(^6UOCB!$n90EUp`p#m;x@t*^sHDMbLs3= z?K=gXO_Qrs*{@MDQY(v~_^ezxC2)=`I&g29Vq~O#{iLA6C=dYSue>y00?U}peI;;F zA#cads)f-tL1eBx%Ag_N6*?g*pv+#c;fh;`faMDSYBWyAXRL1Pxlo|Nj!(-c_XH^tp(0%28svlMvv z(28@>&Q5HoXjFK@(W)vpt&vr<0AB-GcSHJtwvs<(%d0oZ5FU>M*RdIPZ`Fgr7ZwO$ zGCj*8Fv51{LF`FCD>q#rS$3c!y(kS+wS#4&`OIHuo%`v-EPW-D1IvP8Rq*~g0R$Bk zXi(2rUPgMp6%X{w5Ls+mBr6{mU&=%Cz9CPc$=`9JymqNz7qRtPa?{i1H`s8a__)?IfN*TYlX$los$6b;6VhdrV1@3W9fi0eumd zD^fX*G!vSAPo(2NaSgX00^*|1jzI98K(d?f^9ieVG3%HM+O~_X>|j?yMT%02#r>}k zS~}-a>_P(jiWK&F$adKkAoOoK2P3yDFS_S0?MkPBNMQbgkwzRXoAOLIa`NbbzPXikmH<=wt&^{E|7JdqJC-MMjSOn^zTUGCi;H@iFb z|0K1{AScM$ywbH$)yBm@w)3*Jp21QrWT_Ujk}w(XASWhXX*=mW`guVNM0%OT!JlFd z&Of!%yov_U12EN9n0ieH0N$&OB_B!mHx0mWg{ptSKm8m}K=71228MW{Wq_H=aI?1q z;V8wGJ!!78&tM8Re<0|F*5Y?Rg^FWI9X%pj^&cNhfc2xSGybx}xWGZjNOP5~Zv^YE zWH>q+IkwU+^+`?h{wzMf-&Ed)@RGYR0noi4dDH%q-q#G+H^4Y~Wq@-op0%u=GD%s0 zZ3G%tR*1jq@UVHOy|KlMiD=G@)5L(ExeoaSkOnQ^R`C%NC8r2{mY6vVUwg5vc7S6wFP{4swY^QdQTS_c5ey3ZD2a<8BA{MG)#PLxEPE)wHux6M8mDV zll0RayB{))PX|3q^PLkW4#ZhWgh%+bkC8y8xltg~k7j#wr9}!2SoTZ+x4XI8LW=b>o$a7y_Jc&oK~J&C|EWJogYPu~ zUY3-s;AwFI5Wt-B840=z3~>0pGM-doRgR}HM3?2cRX`p?l+S!??#JwB&3CXs`F8a9 zm{agh@=tk)`{7wSA;kMSAq`Y}uk^&0uWYulriD+^H9?OG?~WAPP<{Y&a+&e=rALfr zckp*{kdHoc#)sZ_$O*Md>a`;*iQ{nFOZ&(eSFb{r#Epbmj_QxC?v7sWa-Xn~8$D3S zFCljwo&ew%WuXZJfl6hA4^K*2MstWCJEYpdASih)+k~mMj98+A3)?<4QfQr)b`^Oy z@M5|!(ZA;^6$uCt5?((|qsn~zdYd`#1ty1=)D_&egFuN{87h2GA-{P)5KLs1#2`%t zb44@Gd4F?Uz};;dZE681Pl<%i^r?sF?$t|~sCCMVs&qj?e*5I6t{Y!r+DId6%W3l` zL$N;Zh4GyS|Np0C3)Abc)~dJY|JLw05nb|-)yNZlY)@2HUl2<~jJsf0bGF9T`R$~O zd^C)PP{0ZUgYRUTz`E!oo+P}O-*%ofM!v+QJfuiT`$mO7n%l!mv7n5$F=i-}Io$*& z8cwsue3L3hvm^PCTTMM!x|873@O7Hw|2W4nv$B0%cNPLsy55|?-NibV)v1%hDl?o{ zr>H(%j&_7$zjtKezjCs3!+cdy1c5{}VPd>KzcYj(D|G&@!WKZe-wvF$C!zc5gk~H< zle>4yeCcuFAe5aj%*ZvXySH$`->`d?lo*|`b9r<9%ls`jp??yPrqMe0D2cm^8vhFHiV8d`wS#l&8_OioSh;S8nI?(;d`TT`Ve?TO z;r!~DZ;EA3yec9v69IX8$1FGfIjn_(g^LLbbnNNX1VBE_)pXiXvu0e22{9xM`X_QS zDe{9v`irZ54!&t>w#si0!KnnZzIU8E8SghecAm7Q+<<@kijZ%61$Us%oTmCKH4nqL z84#k}_V$NUXnW0Ciu^gfV%`N|K4{}tp}xYd|Hd)8>7yDHH&(?*F3{xi$uGbnPrDm# zCr#Fo2b8IQfLr*XN%G$-rzqqT#l5H(mi}2LlfyBxJ#V)7@P*c{Xp@XU##=seq z-+U|PtypHiYghhMZ_c2lC{XWi1C;gFYBI|o{l%=6p4H%}w4vkzT;m;xdm)qga4MKU zKvkwGx%PJ4?)@Ev5BjRrwK1BVXMB|wpoCdL7x{&q{(verozS8pgZ<*&*yu$K`8Vu@ zOJq%$zaRUp;68@1_i=ssCrd81F&qGXvZxl$cptKnZ1vO>MTiw$1*la1mE4RQAQ}*( zl!Ib{;AzJO`+zjs03TNrHN>W+)0RpyG*A&-L1>z>ZWlV54aqHo#WL?d0r-MQ^s5$_ zIckyAhzBVi$~UhGw@q^Pc}DSRsJgM;?#nl7L;ICaVfZl5jKhD zzEfdNf+nPMj6;+8HTl!q+bel+0YeMhn!qK%&|(GWk9GpE$irq|{l}4DbQOwN;<7(v z4CPjH&#OG7pTS)01IO_F^Tw=2755=;-j2g+fS1y;R$%D_{C~w!12?If8&yyQxV{Bi z_c*T&)(rJpgHAQKG%Ph2d>(}y}idg{^sKeF?Hmq^->trA~fnBP* zVoB>6t95^+(DTW{j5Q<6x5R_gO^*7bvDBsC{OW>|U0{`5>Wz#7d3UR58o?aRvN}2--hjDSdNJc#+g78-!a@P;>s2G!*sFC9?e#?p$+MR51i;$T z4l+Mx4+1zV)(##DWGF3;sMN0 z-n6eTXssoke9c>U?RjsjkIW1X6SzkqTo=OAt`4^m&@e-GAgoet$WmFz%9ORZQl;#U zG#(WkfNoDtKdrXz3Y?I}fXeEHN~g^4I6_e2u{arhL&zsdoxu{5&IGs)c`6_l1!$S~ zH)q9%!Jw+9l~w~369=6elg3fW80S?`+^t3607Rgh$$mI8+l80mV6E*>#F%0DBo{@M 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 literal 0 HcmV?d00001 diff --git a/v0.8.79/assets/mstile-150x150.png b/v0.8.79/assets/mstile-150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..26b5dc9e91f058120c51e134bc76f3799ade0a9a GIT binary patch literal 19425 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,html.theme--documenter-dark .button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:.4em;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(0.5em - 1px);padding-left:calc(0.75em - 1px);padding-right:calc(0.75em - 1px);padding-top:calc(0.5em - 1px);position:relative;vertical-align:top}html.theme--documenter-dark .pagination-previous:focus,html.theme--documenter-dark .pagination-next:focus,html.theme--documenter-dark .pagination-link:focus,html.theme--documenter-dark .pagination-ellipsis:focus,html.theme--documenter-dark .file-cta:focus,html.theme--documenter-dark .file-name:focus,html.theme--documenter-dark .select select:focus,html.theme--documenter-dark .textarea:focus,html.theme--documenter-dark .input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:focus,html.theme--documenter-dark .button:focus,html.theme--documenter-dark .is-focused.pagination-previous,html.theme--documenter-dark .is-focused.pagination-next,html.theme--documenter-dark .is-focused.pagination-link,html.theme--documenter-dark .is-focused.pagination-ellipsis,html.theme--documenter-dark .is-focused.file-cta,html.theme--documenter-dark .is-focused.file-name,html.theme--documenter-dark .select select.is-focused,html.theme--documenter-dark .is-focused.textarea,html.theme--documenter-dark .is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-focused.button,html.theme--documenter-dark .pagination-previous:active,html.theme--documenter-dark .pagination-next:active,html.theme--documenter-dark .pagination-link:active,html.theme--documenter-dark .pagination-ellipsis:active,html.theme--documenter-dark .file-cta:active,html.theme--documenter-dark .file-name:active,html.theme--documenter-dark .select select:active,html.theme--documenter-dark .textarea:active,html.theme--documenter-dark .input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:active,html.theme--documenter-dark .button:active,html.theme--documenter-dark .is-active.pagination-previous,html.theme--documenter-dark .is-active.pagination-next,html.theme--documenter-dark .is-active.pagination-link,html.theme--documenter-dark .is-active.pagination-ellipsis,html.theme--documenter-dark .is-active.file-cta,html.theme--documenter-dark .is-active.file-name,html.theme--documenter-dark .select select.is-active,html.theme--documenter-dark .is-active.textarea,html.theme--documenter-dark .is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--documenter-dark .is-active.button{outline:none}html.theme--documenter-dark .pagination-previous[disabled],html.theme--documenter-dark .pagination-next[disabled],html.theme--documenter-dark .pagination-link[disabled],html.theme--documenter-dark .pagination-ellipsis[disabled],html.theme--documenter-dark .file-cta[disabled],html.theme--documenter-dark .file-name[disabled],html.theme--documenter-dark .select select[disabled],html.theme--documenter-dark .textarea[disabled],html.theme--documenter-dark .input[disabled],html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled],html.theme--documenter-dark .button[disabled],fieldset[disabled] html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark fieldset[disabled] .pagination-previous,fieldset[disabled] html.theme--documenter-dark .pagination-next,html.theme--documenter-dark fieldset[disabled] .pagination-next,fieldset[disabled] html.theme--documenter-dark .pagination-link,html.theme--documenter-dark fieldset[disabled] .pagination-link,fieldset[disabled] html.theme--documenter-dark .pagination-ellipsis,html.theme--documenter-dark fieldset[disabled] .pagination-ellipsis,fieldset[disabled] html.theme--documenter-dark .file-cta,html.theme--documenter-dark fieldset[disabled] .file-cta,fieldset[disabled] html.theme--documenter-dark .file-name,html.theme--documenter-dark fieldset[disabled] .file-name,fieldset[disabled] html.theme--documenter-dark .select select,fieldset[disabled] html.theme--documenter-dark .textarea,fieldset[disabled] html.theme--documenter-dark .input,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark fieldset[disabled] .select select,html.theme--documenter-dark .select fieldset[disabled] select,html.theme--documenter-dark fieldset[disabled] .textarea,html.theme--documenter-dark fieldset[disabled] .input,html.theme--documenter-dark fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar fieldset[disabled] form.docs-search>input,fieldset[disabled] html.theme--documenter-dark .button,html.theme--documenter-dark fieldset[disabled] .button{cursor:not-allowed}html.theme--documenter-dark .tabs,html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-ellipsis,html.theme--documenter-dark .breadcrumb,html.theme--documenter-dark .file,html.theme--documenter-dark .button,.is-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html.theme--documenter-dark .navbar-link:not(.is-arrowless)::after,html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading)::after{border:3px solid rgba(0,0,0,0);border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:0.625em;margin-top:-0.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:0.625em}html.theme--documenter-dark .admonition:not(:last-child),html.theme--documenter-dark .tabs:not(:last-child),html.theme--documenter-dark .pagination:not(:last-child),html.theme--documenter-dark .message:not(:last-child),html.theme--documenter-dark .level:not(:last-child),html.theme--documenter-dark .breadcrumb:not(:last-child),html.theme--documenter-dark .block:not(:last-child),html.theme--documenter-dark .title:not(:last-child),html.theme--documenter-dark .subtitle:not(:last-child),html.theme--documenter-dark .table-container:not(:last-child),html.theme--documenter-dark .table:not(:last-child),html.theme--documenter-dark .progress:not(:last-child),html.theme--documenter-dark .notification:not(:last-child),html.theme--documenter-dark .content:not(:last-child),html.theme--documenter-dark .box:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .modal-close,html.theme--documenter-dark .delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,0.2);border:none;border-radius:9999px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}html.theme--documenter-dark .modal-close::before,html.theme--documenter-dark .delete::before,html.theme--documenter-dark .modal-close::after,html.theme--documenter-dark .delete::after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--documenter-dark .modal-close::before,html.theme--documenter-dark .delete::before{height:2px;width:50%}html.theme--documenter-dark .modal-close::after,html.theme--documenter-dark .delete::after{height:50%;width:2px}html.theme--documenter-dark .modal-close:hover,html.theme--documenter-dark .delete:hover,html.theme--documenter-dark .modal-close:focus,html.theme--documenter-dark .delete:focus{background-color:rgba(10,10,10,0.3)}html.theme--documenter-dark .modal-close:active,html.theme--documenter-dark .delete:active{background-color:rgba(10,10,10,0.4)}html.theme--documenter-dark .is-small.modal-close,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.modal-close,html.theme--documenter-dark .is-small.delete,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}html.theme--documenter-dark .is-medium.modal-close,html.theme--documenter-dark .is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}html.theme--documenter-dark .is-large.modal-close,html.theme--documenter-dark .is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}html.theme--documenter-dark .control.is-loading::after,html.theme--documenter-dark .select.is-loading::after,html.theme--documenter-dark .loader,html.theme--documenter-dark .button.is-loading::after{animation:spinAround 500ms infinite linear;border:2px solid #dbdee0;border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}html.theme--documenter-dark .hero-video,html.theme--documenter-dark .modal-background,html.theme--documenter-dark .modal,html.theme--documenter-dark .image.is-square img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--documenter-dark .image.is-square .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--documenter-dark .image.is-1by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--documenter-dark .image.is-1by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--documenter-dark .image.is-5by4 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--documenter-dark .image.is-5by4 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--documenter-dark .image.is-4by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--documenter-dark .image.is-4by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--documenter-dark .image.is-3by2 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--documenter-dark .image.is-3by2 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--documenter-dark .image.is-5by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--documenter-dark .image.is-5by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--documenter-dark .image.is-16by9 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--documenter-dark .image.is-16by9 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--documenter-dark .image.is-2by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--documenter-dark .image.is-2by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--documenter-dark .image.is-3by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--documenter-dark .image.is-3by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--documenter-dark .image.is-4by5 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--documenter-dark .image.is-4by5 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--documenter-dark .image.is-3by4 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--documenter-dark .image.is-3by4 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--documenter-dark .image.is-2by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--documenter-dark .image.is-2by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--documenter-dark .image.is-3by5 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--documenter-dark .image.is-3by5 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--documenter-dark .image.is-9by16 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--documenter-dark .image.is-9by16 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--documenter-dark .image.is-1by2 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--documenter-dark .image.is-1by2 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--documenter-dark .image.is-1by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--documenter-dark .image.is-1by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio,.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}html.theme--documenter-dark .navbar-burger{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#ecf0f1 !important}a.has-text-light:hover,a.has-text-light:focus{color:#cfd9db !important}.has-background-light{background-color:#ecf0f1 !important}.has-text-dark{color:#282f2f !important}a.has-text-dark:hover,a.has-text-dark:focus{color:#111414 !important}.has-background-dark{background-color:#282f2f !important}.has-text-primary{color:#375a7f !important}a.has-text-primary:hover,a.has-text-primary:focus{color:#28415b !important}.has-background-primary{background-color:#375a7f !important}.has-text-primary-light{color:#f1f5f9 !important}a.has-text-primary-light:hover,a.has-text-primary-light:focus{color:#cddbe9 !important}.has-background-primary-light{background-color:#f1f5f9 !important}.has-text-primary-dark{color:#4d7eb2 !important}a.has-text-primary-dark:hover,a.has-text-primary-dark:focus{color:#7198c1 !important}.has-background-primary-dark{background-color:#4d7eb2 !important}.has-text-link{color:#1abc9c !important}a.has-text-link:hover,a.has-text-link:focus{color:#148f77 !important}.has-background-link{background-color:#1abc9c !important}.has-text-link-light{color:#edfdf9 !important}a.has-text-link-light:hover,a.has-text-link-light:focus{color:#c0f6ec !important}.has-background-link-light{background-color:#edfdf9 !important}.has-text-link-dark{color:#15987e !important}a.has-text-link-dark:hover,a.has-text-link-dark:focus{color:#1bc5a4 !important}.has-background-link-dark{background-color:#15987e !important}.has-text-info{color:#024c7d !important}a.has-text-info:hover,a.has-text-info:focus{color:#012d4b !important}.has-background-info{background-color:#024c7d !important}.has-text-info-light{color:#ebf7ff !important}a.has-text-info-light:hover,a.has-text-info-light:focus{color:#b9e2fe !important}.has-background-info-light{background-color:#ebf7ff !important}.has-text-info-dark{color:#0e9dfb !important}a.has-text-info-dark:hover,a.has-text-info-dark:focus{color:#40b1fc !important}.has-background-info-dark{background-color:#0e9dfb !important}.has-text-success{color:#008438 !important}a.has-text-success:hover,a.has-text-success:focus{color:#005122 !important}.has-background-success{background-color:#008438 !important}.has-text-success-light{color:#ebfff3 !important}a.has-text-success-light:hover,a.has-text-success-light:focus{color:#b8ffd6 !important}.has-background-success-light{background-color:#ebfff3 !important}.has-text-success-dark{color:#00eb64 !important}a.has-text-success-dark:hover,a.has-text-success-dark:focus{color:#1fff7e !important}.has-background-success-dark{background-color:#00eb64 !important}.has-text-warning{color:#ad8100 !important}a.has-text-warning:hover,a.has-text-warning:focus{color:#7a5b00 !important}.has-background-warning{background-color:#ad8100 !important}.has-text-warning-light{color:#fffaeb !important}a.has-text-warning-light:hover,a.has-text-warning-light:focus{color:#ffedb8 !important}.has-background-warning-light{background-color:#fffaeb !important}.has-text-warning-dark{color:#d19c00 !important}a.has-text-warning-dark:hover,a.has-text-warning-dark:focus{color:#ffbf05 !important}.has-background-warning-dark{background-color:#d19c00 !important}.has-text-danger{color:#9e1b0d !important}a.has-text-danger:hover,a.has-text-danger:focus{color:#6f1309 !important}.has-background-danger{background-color:#9e1b0d !important}.has-text-danger-light{color:#fdeeec !important}a.has-text-danger-light:hover,a.has-text-danger-light:focus{color:#fac3bd !important}.has-background-danger-light{background-color:#fdeeec !important}.has-text-danger-dark{color:#ec311d !important}a.has-text-danger-dark:hover,a.has-text-danger-dark:focus{color:#f05c4c !important}.has-background-danger-dark{background-color:#ec311d !important}.has-text-black-bis{color:#121212 !important}.has-background-black-bis{background-color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-background-black-ter{background-color:#242424 !important}.has-text-grey-darker{color:#282f2f !important}.has-background-grey-darker{background-color:#282f2f !important}.has-text-grey-dark{color:#343c3d !important}.has-background-grey-dark{background-color:#343c3d !important}.has-text-grey{color:#5e6d6f !important}.has-background-grey{background-color:#5e6d6f !important}.has-text-grey-light{color:#8c9b9d !important}.has-background-grey-light{background-color:#8c9b9d !important}.has-text-grey-lighter{color:#dbdee0 !important}.has-background-grey-lighter{background-color:#dbdee0 !important}.has-text-white-ter{color:#ecf0f1 !important}.has-background-white-ter{background-color:#ecf0f1 !important}.has-text-white-bis{color:#fafafa !important}.has-background-white-bis{background-color:#fafafa !important}.is-flex-direction-row{flex-direction:row !important}.is-flex-direction-row-reverse{flex-direction:row-reverse !important}.is-flex-direction-column{flex-direction:column !important}.is-flex-direction-column-reverse{flex-direction:column-reverse !important}.is-flex-wrap-nowrap{flex-wrap:nowrap !important}.is-flex-wrap-wrap{flex-wrap:wrap !important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse !important}.is-justify-content-flex-start{justify-content:flex-start !important}.is-justify-content-flex-end{justify-content:flex-end !important}.is-justify-content-center{justify-content:center !important}.is-justify-content-space-between{justify-content:space-between !important}.is-justify-content-space-around{justify-content:space-around !important}.is-justify-content-space-evenly{justify-content:space-evenly !important}.is-justify-content-start{justify-content:start !important}.is-justify-content-end{justify-content:end !important}.is-justify-content-left{justify-content:left !important}.is-justify-content-right{justify-content:right !important}.is-align-content-flex-start{align-content:flex-start !important}.is-align-content-flex-end{align-content:flex-end !important}.is-align-content-center{align-content:center !important}.is-align-content-space-between{align-content:space-between !important}.is-align-content-space-around{align-content:space-around !important}.is-align-content-space-evenly{align-content:space-evenly !important}.is-align-content-stretch{align-content:stretch !important}.is-align-content-start{align-content:start !important}.is-align-content-end{align-content:end !important}.is-align-content-baseline{align-content:baseline !important}.is-align-items-stretch{align-items:stretch !important}.is-align-items-flex-start{align-items:flex-start !important}.is-align-items-flex-end{align-items:flex-end !important}.is-align-items-center{align-items:center !important}.is-align-items-baseline{align-items:baseline !important}.is-align-items-start{align-items:start !important}.is-align-items-end{align-items:end !important}.is-align-items-self-start{align-items:self-start !important}.is-align-items-self-end{align-items:self-end !important}.is-align-self-auto{align-self:auto !important}.is-align-self-flex-start{align-self:flex-start !important}.is-align-self-flex-end{align-self:flex-end !important}.is-align-self-center{align-self:center !important}.is-align-self-baseline{align-self:baseline !important}.is-align-self-stretch{align-self:stretch !important}.is-flex-grow-0{flex-grow:0 !important}.is-flex-grow-1{flex-grow:1 !important}.is-flex-grow-2{flex-grow:2 !important}.is-flex-grow-3{flex-grow:3 !important}.is-flex-grow-4{flex-grow:4 !important}.is-flex-grow-5{flex-grow:5 !important}.is-flex-shrink-0{flex-shrink:0 !important}.is-flex-shrink-1{flex-shrink:1 !important}.is-flex-shrink-2{flex-shrink:2 !important}.is-flex-shrink-3{flex-shrink:3 !important}.is-flex-shrink-4{flex-shrink:4 !important}.is-flex-shrink-5{flex-shrink:5 !important}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-radiusless{border-radius:0 !important}.is-shadowless{box-shadow:none !important}.is-clickable{cursor:pointer !important;pointer-events:all !important}.is-clipped{overflow:hidden !important}.is-relative{position:relative !important}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.m-0{margin:0 !important}.mt-0{margin-top:0 !important}.mr-0{margin-right:0 !important}.mb-0{margin-bottom:0 !important}.ml-0{margin-left:0 !important}.mx-0{margin-left:0 !important;margin-right:0 !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.m-1{margin:.25rem !important}.mt-1{margin-top:.25rem !important}.mr-1{margin-right:.25rem !important}.mb-1{margin-bottom:.25rem !important}.ml-1{margin-left:.25rem !important}.mx-1{margin-left:.25rem !important;margin-right:.25rem !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.m-2{margin:.5rem !important}.mt-2{margin-top:.5rem !important}.mr-2{margin-right:.5rem !important}.mb-2{margin-bottom:.5rem !important}.ml-2{margin-left:.5rem !important}.mx-2{margin-left:.5rem !important;margin-right:.5rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.m-3{margin:.75rem !important}.mt-3{margin-top:.75rem !important}.mr-3{margin-right:.75rem !important}.mb-3{margin-bottom:.75rem !important}.ml-3{margin-left:.75rem !important}.mx-3{margin-left:.75rem !important;margin-right:.75rem !important}.my-3{margin-top:.75rem !important;margin-bottom:.75rem !important}.m-4{margin:1rem !important}.mt-4{margin-top:1rem !important}.mr-4{margin-right:1rem !important}.mb-4{margin-bottom:1rem !important}.ml-4{margin-left:1rem !important}.mx-4{margin-left:1rem !important;margin-right:1rem !important}.my-4{margin-top:1rem !important;margin-bottom:1rem !important}.m-5{margin:1.5rem !important}.mt-5{margin-top:1.5rem !important}.mr-5{margin-right:1.5rem !important}.mb-5{margin-bottom:1.5rem !important}.ml-5{margin-left:1.5rem !important}.mx-5{margin-left:1.5rem !important;margin-right:1.5rem !important}.my-5{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-6{margin:3rem !important}.mt-6{margin-top:3rem !important}.mr-6{margin-right:3rem !important}.mb-6{margin-bottom:3rem !important}.ml-6{margin-left:3rem !important}.mx-6{margin-left:3rem !important;margin-right:3rem !important}.my-6{margin-top:3rem !important;margin-bottom:3rem !important}.m-auto{margin:auto !important}.mt-auto{margin-top:auto !important}.mr-auto{margin-right:auto !important}.mb-auto{margin-bottom:auto !important}.ml-auto{margin-left:auto !important}.mx-auto{margin-left:auto !important;margin-right:auto !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.p-0{padding:0 !important}.pt-0{padding-top:0 !important}.pr-0{padding-right:0 !important}.pb-0{padding-bottom:0 !important}.pl-0{padding-left:0 !important}.px-0{padding-left:0 !important;padding-right:0 !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.p-1{padding:.25rem !important}.pt-1{padding-top:.25rem !important}.pr-1{padding-right:.25rem !important}.pb-1{padding-bottom:.25rem !important}.pl-1{padding-left:.25rem !important}.px-1{padding-left:.25rem !important;padding-right:.25rem !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.p-2{padding:.5rem !important}.pt-2{padding-top:.5rem !important}.pr-2{padding-right:.5rem !important}.pb-2{padding-bottom:.5rem !important}.pl-2{padding-left:.5rem !important}.px-2{padding-left:.5rem !important;padding-right:.5rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.p-3{padding:.75rem !important}.pt-3{padding-top:.75rem !important}.pr-3{padding-right:.75rem !important}.pb-3{padding-bottom:.75rem !important}.pl-3{padding-left:.75rem !important}.px-3{padding-left:.75rem !important;padding-right:.75rem !important}.py-3{padding-top:.75rem !important;padding-bottom:.75rem !important}.p-4{padding:1rem !important}.pt-4{padding-top:1rem !important}.pr-4{padding-right:1rem !important}.pb-4{padding-bottom:1rem !important}.pl-4{padding-left:1rem !important}.px-4{padding-left:1rem !important;padding-right:1rem !important}.py-4{padding-top:1rem !important;padding-bottom:1rem !important}.p-5{padding:1.5rem !important}.pt-5{padding-top:1.5rem !important}.pr-5{padding-right:1.5rem !important}.pb-5{padding-bottom:1.5rem !important}.pl-5{padding-left:1.5rem !important}.px-5{padding-left:1.5rem !important;padding-right:1.5rem !important}.py-5{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-6{padding:3rem !important}.pt-6{padding-top:3rem !important}.pr-6{padding-right:3rem !important}.pb-6{padding-bottom:3rem !important}.pl-6{padding-left:3rem !important}.px-6{padding-left:3rem !important;padding-right:3rem !important}.py-6{padding-top:3rem !important;padding-bottom:3rem !important}.p-auto{padding:auto !important}.pt-auto{padding-top:auto !important}.pr-auto{padding-right:auto !important}.pb-auto{padding-bottom:auto !important}.pl-auto{padding-left:auto !important}.px-auto{padding-left:auto !important;padding-right:auto !important}.py-auto{padding-top:auto !important;padding-bottom:auto !important}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:1rem !important}.is-size-7,html.theme--documenter-dark .docstring>section>a.docs-sourcelink{font-size:.75rem !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:1rem !important}.is-size-7-mobile{font-size:.75rem !important}}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:1rem !important}.is-size-7-tablet{font-size:.75rem !important}}@media screen and (max-width: 1055px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:1rem !important}.is-size-7-touch{font-size:.75rem !important}}@media screen and (min-width: 1056px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:1rem !important}.is-size-7-desktop{font-size:.75rem !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:1rem !important}.is-size-7-widescreen{font-size:.75rem !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:1rem !important}.is-size-7-fullhd{font-size:.75rem !important}}.has-text-centered{text-align:center !important}.has-text-justified{text-align:justify !important}.has-text-left{text-align:left !important}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px),print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1055px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1056px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px),print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1055px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1056px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px),print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1055px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1056px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px),print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1055px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1056px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.is-underlined{text-decoration:underline !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-medium{font-weight:500 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-family-primary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-secondary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-sans-serif{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-monospace{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-family-code{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px),print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1055px){.is-block-touch{display:block !important}}@media screen and (min-width: 1056px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:flex !important}}@media screen and (min-width: 769px),print{.is-flex-tablet{display:flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-flex-tablet-only{display:flex !important}}@media screen and (max-width: 1055px){.is-flex-touch{display:flex !important}}@media screen and (min-width: 1056px){.is-flex-desktop{display:flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-flex-desktop-only{display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-flex-widescreen-only{display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px),print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1055px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1056px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1055px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1056px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:inline-flex !important}}@media screen and (min-width: 769px),print{.is-inline-flex-tablet{display:inline-flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-flex-tablet-only{display:inline-flex !important}}@media screen and (max-width: 1055px){.is-inline-flex-touch{display:inline-flex !important}}@media screen and (min-width: 1056px){.is-inline-flex-desktop{display:inline-flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-flex-desktop-only{display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:inline-flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-flex-widescreen-only{display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:inline-flex !important}}.is-hidden{display:none !important}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:0.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:0.01em !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px),print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1055px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1056px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px),print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1055px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1056px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}html.theme--documenter-dark{/*! + Theme: a11y-dark + Author: @ericwbailey + Maintainer: @ericwbailey + + Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css +*/}html.theme--documenter-dark html{background-color:#1f2424;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--documenter-dark article,html.theme--documenter-dark aside,html.theme--documenter-dark figure,html.theme--documenter-dark footer,html.theme--documenter-dark header,html.theme--documenter-dark hgroup,html.theme--documenter-dark section{display:block}html.theme--documenter-dark body,html.theme--documenter-dark button,html.theme--documenter-dark input,html.theme--documenter-dark optgroup,html.theme--documenter-dark select,html.theme--documenter-dark textarea{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif}html.theme--documenter-dark code,html.theme--documenter-dark pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--documenter-dark body{color:#fff;font-size:1em;font-weight:400;line-height:1.5}html.theme--documenter-dark a{color:#1abc9c;cursor:pointer;text-decoration:none}html.theme--documenter-dark a strong{color:currentColor}html.theme--documenter-dark a:hover{color:#1dd2af}html.theme--documenter-dark code{background-color:rgba(255,255,255,0.05);color:#ececec;font-size:.875em;font-weight:normal;padding:.1em}html.theme--documenter-dark hr{background-color:#282f2f;border:none;display:block;height:2px;margin:1.5rem 0}html.theme--documenter-dark img{height:auto;max-width:100%}html.theme--documenter-dark input[type="checkbox"],html.theme--documenter-dark input[type="radio"]{vertical-align:baseline}html.theme--documenter-dark small{font-size:.875em}html.theme--documenter-dark span{font-style:inherit;font-weight:inherit}html.theme--documenter-dark strong{color:#f2f2f2;font-weight:700}html.theme--documenter-dark fieldset{border:none}html.theme--documenter-dark pre{-webkit-overflow-scrolling:touch;background-color:#282f2f;color:#fff;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}html.theme--documenter-dark pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}html.theme--documenter-dark table td,html.theme--documenter-dark table th{vertical-align:top}html.theme--documenter-dark table td:not([align]),html.theme--documenter-dark table th:not([align]){text-align:inherit}html.theme--documenter-dark table th{color:#f2f2f2}html.theme--documenter-dark .box{background-color:#343c3d;border-radius:8px;box-shadow:none;color:#fff;display:block;padding:1.25rem}html.theme--documenter-dark a.box:hover,html.theme--documenter-dark a.box:focus{box-shadow:0 0.5em 1em -0.125em rgba(10,10,10,0.1),0 0 0 1px #1abc9c}html.theme--documenter-dark a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2),0 0 0 1px #1abc9c}html.theme--documenter-dark .button{background-color:#282f2f;border-color:#4c5759;border-width:1px;color:#375a7f;cursor:pointer;justify-content:center;padding-bottom:calc(0.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(0.5em - 1px);text-align:center;white-space:nowrap}html.theme--documenter-dark .button strong{color:inherit}html.theme--documenter-dark .button .icon,html.theme--documenter-dark .button .icon.is-small,html.theme--documenter-dark .button #documenter .docs-sidebar form.docs-search>input.icon,html.theme--documenter-dark #documenter .docs-sidebar .button form.docs-search>input.icon,html.theme--documenter-dark .button .icon.is-medium,html.theme--documenter-dark .button .icon.is-large{height:1.5em;width:1.5em}html.theme--documenter-dark .button .icon:first-child:not(:last-child){margin-left:calc(-0.5em - 1px);margin-right:.25em}html.theme--documenter-dark .button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-0.5em - 1px)}html.theme--documenter-dark .button .icon:first-child:last-child{margin-left:calc(-0.5em - 1px);margin-right:calc(-0.5em - 1px)}html.theme--documenter-dark .button:hover,html.theme--documenter-dark .button.is-hovered{border-color:#8c9b9d;color:#f2f2f2}html.theme--documenter-dark .button:focus,html.theme--documenter-dark .button.is-focused{border-color:#8c9b9d;color:#17a689}html.theme--documenter-dark .button:focus:not(:active),html.theme--documenter-dark .button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .button:active,html.theme--documenter-dark .button.is-active{border-color:#343c3d;color:#f2f2f2}html.theme--documenter-dark .button.is-text{background-color:transparent;border-color:transparent;color:#fff;text-decoration:underline}html.theme--documenter-dark .button.is-text:hover,html.theme--documenter-dark .button.is-text.is-hovered,html.theme--documenter-dark .button.is-text:focus,html.theme--documenter-dark .button.is-text.is-focused{background-color:#282f2f;color:#f2f2f2}html.theme--documenter-dark .button.is-text:active,html.theme--documenter-dark .button.is-text.is-active{background-color:#1d2122;color:#f2f2f2}html.theme--documenter-dark .button.is-text[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}html.theme--documenter-dark .button.is-ghost{background:none;border-color:rgba(0,0,0,0);color:#1abc9c;text-decoration:none}html.theme--documenter-dark .button.is-ghost:hover,html.theme--documenter-dark .button.is-ghost.is-hovered{color:#1abc9c;text-decoration:underline}html.theme--documenter-dark .button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .button.is-white:hover,html.theme--documenter-dark .button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .button.is-white:focus,html.theme--documenter-dark .button.is-white.is-focused{border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .button.is-white:focus:not(:active),html.theme--documenter-dark .button.is-white.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--documenter-dark .button.is-white:active,html.theme--documenter-dark .button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .button.is-white[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-white{background-color:#fff;border-color:#fff;box-shadow:none}html.theme--documenter-dark .button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .button.is-white.is-inverted:hover,html.theme--documenter-dark .button.is-white.is-inverted.is-hovered{background-color:#000}html.theme--documenter-dark .button.is-white.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--documenter-dark .button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-white.is-outlined:hover,html.theme--documenter-dark .button.is-white.is-outlined.is-hovered,html.theme--documenter-dark .button.is-white.is-outlined:focus,html.theme--documenter-dark .button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--documenter-dark .button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-white.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-white.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-white.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-white.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--documenter-dark .button.is-white.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--documenter-dark .button.is-white.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--documenter-dark .button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black:hover,html.theme--documenter-dark .button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black:focus,html.theme--documenter-dark .button.is-black.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black:focus:not(:active),html.theme--documenter-dark .button.is-black.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--documenter-dark .button.is-black:active,html.theme--documenter-dark .button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-black[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-black{background-color:#0a0a0a;border-color:#0a0a0a;box-shadow:none}html.theme--documenter-dark .button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-inverted:hover,html.theme--documenter-dark .button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-black.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-outlined:hover,html.theme--documenter-dark .button.is-black.is-outlined.is-hovered,html.theme--documenter-dark .button.is-black.is-outlined:focus,html.theme--documenter-dark .button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--documenter-dark .button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--documenter-dark .button.is-black.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-black.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-black.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-black.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-black.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-black.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}html.theme--documenter-dark .button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-light{background-color:#ecf0f1;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light:hover,html.theme--documenter-dark .button.is-light.is-hovered{background-color:#e5eaec;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light:focus,html.theme--documenter-dark .button.is-light.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light:focus:not(:active),html.theme--documenter-dark .button.is-light.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(236,240,241,0.25)}html.theme--documenter-dark .button.is-light:active,html.theme--documenter-dark .button.is-light.is-active{background-color:#dde4e6;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-light{background-color:#ecf0f1;border-color:#ecf0f1;box-shadow:none}html.theme--documenter-dark .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-inverted:hover,html.theme--documenter-dark .button.is-light.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--documenter-dark .button.is-light.is-outlined{background-color:transparent;border-color:#ecf0f1;color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-outlined:hover,html.theme--documenter-dark .button.is-light.is-outlined.is-hovered,html.theme--documenter-dark .button.is-light.is-outlined:focus,html.theme--documenter-dark .button.is-light.is-outlined.is-focused{background-color:#ecf0f1;border-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #ecf0f1 #ecf0f1 !important}html.theme--documenter-dark .button.is-light.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-light.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-light.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-light.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}html.theme--documenter-dark .button.is-light.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-light.is-outlined{background-color:transparent;border-color:#ecf0f1;box-shadow:none;color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-light.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#ecf0f1}html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #ecf0f1 #ecf0f1 !important}html.theme--documenter-dark .button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .button.is-dark,html.theme--documenter-dark .content kbd.button{background-color:#282f2f;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-dark:hover,html.theme--documenter-dark .content kbd.button:hover,html.theme--documenter-dark .button.is-dark.is-hovered,html.theme--documenter-dark .content kbd.button.is-hovered{background-color:#232829;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-dark:focus,html.theme--documenter-dark .content kbd.button:focus,html.theme--documenter-dark .button.is-dark.is-focused,html.theme--documenter-dark .content kbd.button.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-dark:focus:not(:active),html.theme--documenter-dark .content kbd.button:focus:not(:active),html.theme--documenter-dark .button.is-dark.is-focused:not(:active),html.theme--documenter-dark .content kbd.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(40,47,47,0.25)}html.theme--documenter-dark .button.is-dark:active,html.theme--documenter-dark .content kbd.button:active,html.theme--documenter-dark .button.is-dark.is-active,html.theme--documenter-dark .content kbd.button.is-active{background-color:#1d2122;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-dark[disabled],html.theme--documenter-dark .content kbd.button[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-dark,fieldset[disabled] html.theme--documenter-dark .content kbd.button{background-color:#282f2f;border-color:#282f2f;box-shadow:none}html.theme--documenter-dark .button.is-dark.is-inverted,html.theme--documenter-dark .content kbd.button.is-inverted{background-color:#fff;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-inverted:hover,html.theme--documenter-dark .content kbd.button.is-inverted:hover,html.theme--documenter-dark .button.is-dark.is-inverted.is-hovered,html.theme--documenter-dark .content kbd.button.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-dark.is-inverted[disabled],html.theme--documenter-dark .content kbd.button.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-inverted,fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-loading::after,html.theme--documenter-dark .content kbd.button.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-dark.is-outlined,html.theme--documenter-dark .content kbd.button.is-outlined{background-color:transparent;border-color:#282f2f;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-outlined:hover,html.theme--documenter-dark .content kbd.button.is-outlined:hover,html.theme--documenter-dark .button.is-dark.is-outlined.is-hovered,html.theme--documenter-dark .content kbd.button.is-outlined.is-hovered,html.theme--documenter-dark .button.is-dark.is-outlined:focus,html.theme--documenter-dark .content kbd.button.is-outlined:focus,html.theme--documenter-dark .button.is-dark.is-outlined.is-focused,html.theme--documenter-dark .content kbd.button.is-outlined.is-focused{background-color:#282f2f;border-color:#282f2f;color:#fff}html.theme--documenter-dark .button.is-dark.is-outlined.is-loading::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading::after{border-color:transparent transparent #282f2f #282f2f !important}html.theme--documenter-dark .button.is-dark.is-outlined.is-loading:hover::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-dark.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-dark.is-outlined.is-loading:focus::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-dark.is-outlined.is-loading.is-focused::after,html.theme--documenter-dark .content kbd.button.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-dark.is-outlined[disabled],html.theme--documenter-dark .content kbd.button.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-outlined,fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-outlined{background-color:transparent;border-color:#282f2f;box-shadow:none;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined:hover,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined:focus,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-focused,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-focused{background-color:#fff;color:#282f2f}html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #282f2f #282f2f !important}html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined[disabled],html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined,fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-primary,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink{background-color:#375a7f;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-primary:hover,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-hovered.docs-sourcelink{background-color:#335476;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-primary:focus,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:focus,html.theme--documenter-dark .button.is-primary.is-focused,html.theme--documenter-dark .docstring>section>a.button.is-focused.docs-sourcelink{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-primary:focus:not(:active),html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:focus:not(:active),html.theme--documenter-dark .button.is-primary.is-focused:not(:active),html.theme--documenter-dark .docstring>section>a.button.is-focused.docs-sourcelink:not(:active){box-shadow:0 0 0 0.125em rgba(55,90,127,0.25)}html.theme--documenter-dark .button.is-primary:active,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:active,html.theme--documenter-dark .button.is-primary.is-active,html.theme--documenter-dark .docstring>section>a.button.is-active.docs-sourcelink{background-color:#2f4d6d;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-primary[disabled],html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-primary,fieldset[disabled] html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink{background-color:#375a7f;border-color:#375a7f;box-shadow:none}html.theme--documenter-dark .button.is-primary.is-inverted,html.theme--documenter-dark .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-inverted:hover,html.theme--documenter-dark .docstring>section>a.button.is-inverted.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-inverted.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-hovered.docs-sourcelink{background-color:#f2f2f2}html.theme--documenter-dark .button.is-primary.is-inverted[disabled],html.theme--documenter-dark .docstring>section>a.button.is-inverted.docs-sourcelink[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-inverted,fieldset[disabled] html.theme--documenter-dark .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;border-color:transparent;box-shadow:none;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-loading::after,html.theme--documenter-dark .docstring>section>a.button.is-loading.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-primary.is-outlined,html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#375a7f;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-outlined:hover,html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-outlined.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-hovered.docs-sourcelink,html.theme--documenter-dark .button.is-primary.is-outlined:focus,html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink:focus,html.theme--documenter-dark .button.is-primary.is-outlined.is-focused,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-focused.docs-sourcelink{background-color:#375a7f;border-color:#375a7f;color:#fff}html.theme--documenter-dark .button.is-primary.is-outlined.is-loading::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink::after{border-color:transparent transparent #375a7f #375a7f !important}html.theme--documenter-dark .button.is-primary.is-outlined.is-loading:hover::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--documenter-dark .button.is-primary.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--documenter-dark .button.is-primary.is-outlined.is-loading:focus::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--documenter-dark .button.is-primary.is-outlined.is-loading.is-focused::after,html.theme--documenter-dark .docstring>section>a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-primary.is-outlined[disabled],html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-outlined,fieldset[disabled] html.theme--documenter-dark .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#375a7f;box-shadow:none;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined:hover,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined:focus,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:focus,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-focused,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-focused.docs-sourcelink{background-color:#fff;color:#375a7f}html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after,html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after,html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #375a7f #375a7f !important}html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined[disabled],html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined,fieldset[disabled] html.theme--documenter-dark .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-primary.is-light,html.theme--documenter-dark .docstring>section>a.button.is-light.docs-sourcelink{background-color:#f1f5f9;color:#4d7eb2}html.theme--documenter-dark .button.is-primary.is-light:hover,html.theme--documenter-dark .docstring>section>a.button.is-light.docs-sourcelink:hover,html.theme--documenter-dark .button.is-primary.is-light.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-light.is-hovered.docs-sourcelink{background-color:#e8eef5;border-color:transparent;color:#4d7eb2}html.theme--documenter-dark .button.is-primary.is-light:active,html.theme--documenter-dark .docstring>section>a.button.is-light.docs-sourcelink:active,html.theme--documenter-dark .button.is-primary.is-light.is-active,html.theme--documenter-dark .docstring>section>a.button.is-light.is-active.docs-sourcelink{background-color:#dfe8f1;border-color:transparent;color:#4d7eb2}html.theme--documenter-dark .button.is-link{background-color:#1abc9c;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-link:hover,html.theme--documenter-dark .button.is-link.is-hovered{background-color:#18b193;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-link:focus,html.theme--documenter-dark .button.is-link.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-link:focus:not(:active),html.theme--documenter-dark .button.is-link.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .button.is-link:active,html.theme--documenter-dark .button.is-link.is-active{background-color:#17a689;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-link[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-link{background-color:#1abc9c;border-color:#1abc9c;box-shadow:none}html.theme--documenter-dark .button.is-link.is-inverted{background-color:#fff;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-inverted:hover,html.theme--documenter-dark .button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-link.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-link.is-outlined{background-color:transparent;border-color:#1abc9c;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-outlined:hover,html.theme--documenter-dark .button.is-link.is-outlined.is-hovered,html.theme--documenter-dark .button.is-link.is-outlined:focus,html.theme--documenter-dark .button.is-link.is-outlined.is-focused{background-color:#1abc9c;border-color:#1abc9c;color:#fff}html.theme--documenter-dark .button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #1abc9c #1abc9c !important}html.theme--documenter-dark .button.is-link.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-link.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-link.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-link.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-link.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-link.is-outlined{background-color:transparent;border-color:#1abc9c;box-shadow:none;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-link.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#1abc9c}html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #1abc9c #1abc9c !important}html.theme--documenter-dark .button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-link.is-light{background-color:#edfdf9;color:#15987e}html.theme--documenter-dark .button.is-link.is-light:hover,html.theme--documenter-dark .button.is-link.is-light.is-hovered{background-color:#e2fbf6;border-color:transparent;color:#15987e}html.theme--documenter-dark .button.is-link.is-light:active,html.theme--documenter-dark .button.is-link.is-light.is-active{background-color:#d7f9f3;border-color:transparent;color:#15987e}html.theme--documenter-dark .button.is-info{background-color:#024c7d;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-info:hover,html.theme--documenter-dark .button.is-info.is-hovered{background-color:#024470;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-info:focus,html.theme--documenter-dark .button.is-info.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-info:focus:not(:active),html.theme--documenter-dark .button.is-info.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(2,76,125,0.25)}html.theme--documenter-dark .button.is-info:active,html.theme--documenter-dark .button.is-info.is-active{background-color:#023d64;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-info[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-info{background-color:#024c7d;border-color:#024c7d;box-shadow:none}html.theme--documenter-dark .button.is-info.is-inverted{background-color:#fff;color:#024c7d}html.theme--documenter-dark .button.is-info.is-inverted:hover,html.theme--documenter-dark .button.is-info.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-info.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#024c7d}html.theme--documenter-dark .button.is-info.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-info.is-outlined{background-color:transparent;border-color:#024c7d;color:#024c7d}html.theme--documenter-dark .button.is-info.is-outlined:hover,html.theme--documenter-dark .button.is-info.is-outlined.is-hovered,html.theme--documenter-dark .button.is-info.is-outlined:focus,html.theme--documenter-dark .button.is-info.is-outlined.is-focused{background-color:#024c7d;border-color:#024c7d;color:#fff}html.theme--documenter-dark .button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #024c7d #024c7d !important}html.theme--documenter-dark .button.is-info.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-info.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-info.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-info.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-info.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-info.is-outlined{background-color:transparent;border-color:#024c7d;box-shadow:none;color:#024c7d}html.theme--documenter-dark .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-info.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-focused{background-color:#fff;color:#024c7d}html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #024c7d #024c7d !important}html.theme--documenter-dark .button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-info.is-light{background-color:#ebf7ff;color:#0e9dfb}html.theme--documenter-dark .button.is-info.is-light:hover,html.theme--documenter-dark .button.is-info.is-light.is-hovered{background-color:#def2fe;border-color:transparent;color:#0e9dfb}html.theme--documenter-dark .button.is-info.is-light:active,html.theme--documenter-dark .button.is-info.is-light.is-active{background-color:#d2edfe;border-color:transparent;color:#0e9dfb}html.theme--documenter-dark .button.is-success{background-color:#008438;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-success:hover,html.theme--documenter-dark .button.is-success.is-hovered{background-color:#073;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-success:focus,html.theme--documenter-dark .button.is-success.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-success:focus:not(:active),html.theme--documenter-dark .button.is-success.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(0,132,56,0.25)}html.theme--documenter-dark .button.is-success:active,html.theme--documenter-dark .button.is-success.is-active{background-color:#006b2d;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-success[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-success{background-color:#008438;border-color:#008438;box-shadow:none}html.theme--documenter-dark .button.is-success.is-inverted{background-color:#fff;color:#008438}html.theme--documenter-dark .button.is-success.is-inverted:hover,html.theme--documenter-dark .button.is-success.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-success.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#008438}html.theme--documenter-dark .button.is-success.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-success.is-outlined{background-color:transparent;border-color:#008438;color:#008438}html.theme--documenter-dark .button.is-success.is-outlined:hover,html.theme--documenter-dark .button.is-success.is-outlined.is-hovered,html.theme--documenter-dark .button.is-success.is-outlined:focus,html.theme--documenter-dark .button.is-success.is-outlined.is-focused{background-color:#008438;border-color:#008438;color:#fff}html.theme--documenter-dark .button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #008438 #008438 !important}html.theme--documenter-dark .button.is-success.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-success.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-success.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-success.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-success.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-success.is-outlined{background-color:transparent;border-color:#008438;box-shadow:none;color:#008438}html.theme--documenter-dark .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-success.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-focused{background-color:#fff;color:#008438}html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #008438 #008438 !important}html.theme--documenter-dark .button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-success.is-light{background-color:#ebfff3;color:#00eb64}html.theme--documenter-dark .button.is-success.is-light:hover,html.theme--documenter-dark .button.is-success.is-light.is-hovered{background-color:#deffec;border-color:transparent;color:#00eb64}html.theme--documenter-dark .button.is-success.is-light:active,html.theme--documenter-dark .button.is-success.is-light.is-active{background-color:#d1ffe5;border-color:transparent;color:#00eb64}html.theme--documenter-dark .button.is-warning{background-color:#ad8100;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-warning:hover,html.theme--documenter-dark .button.is-warning.is-hovered{background-color:#a07700;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-warning:focus,html.theme--documenter-dark .button.is-warning.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-warning:focus:not(:active),html.theme--documenter-dark .button.is-warning.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(173,129,0,0.25)}html.theme--documenter-dark .button.is-warning:active,html.theme--documenter-dark .button.is-warning.is-active{background-color:#946e00;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-warning[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-warning{background-color:#ad8100;border-color:#ad8100;box-shadow:none}html.theme--documenter-dark .button.is-warning.is-inverted{background-color:#fff;color:#ad8100}html.theme--documenter-dark .button.is-warning.is-inverted:hover,html.theme--documenter-dark .button.is-warning.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-warning.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#ad8100}html.theme--documenter-dark .button.is-warning.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-warning.is-outlined{background-color:transparent;border-color:#ad8100;color:#ad8100}html.theme--documenter-dark .button.is-warning.is-outlined:hover,html.theme--documenter-dark .button.is-warning.is-outlined.is-hovered,html.theme--documenter-dark .button.is-warning.is-outlined:focus,html.theme--documenter-dark .button.is-warning.is-outlined.is-focused{background-color:#ad8100;border-color:#ad8100;color:#fff}html.theme--documenter-dark .button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #ad8100 #ad8100 !important}html.theme--documenter-dark .button.is-warning.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-warning.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-warning.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-warning.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-warning.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-outlined{background-color:transparent;border-color:#ad8100;box-shadow:none;color:#ad8100}html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-focused{background-color:#fff;color:#ad8100}html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #ad8100 #ad8100 !important}html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-warning.is-light{background-color:#fffaeb;color:#d19c00}html.theme--documenter-dark .button.is-warning.is-light:hover,html.theme--documenter-dark .button.is-warning.is-light.is-hovered{background-color:#fff7de;border-color:transparent;color:#d19c00}html.theme--documenter-dark .button.is-warning.is-light:active,html.theme--documenter-dark .button.is-warning.is-light.is-active{background-color:#fff3d1;border-color:transparent;color:#d19c00}html.theme--documenter-dark .button.is-danger{background-color:#9e1b0d;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-danger:hover,html.theme--documenter-dark .button.is-danger.is-hovered{background-color:#92190c;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-danger:focus,html.theme--documenter-dark .button.is-danger.is-focused{border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-danger:focus:not(:active),html.theme--documenter-dark .button.is-danger.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(158,27,13,0.25)}html.theme--documenter-dark .button.is-danger:active,html.theme--documenter-dark .button.is-danger.is-active{background-color:#86170b;border-color:transparent;color:#fff}html.theme--documenter-dark .button.is-danger[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-danger{background-color:#9e1b0d;border-color:#9e1b0d;box-shadow:none}html.theme--documenter-dark .button.is-danger.is-inverted{background-color:#fff;color:#9e1b0d}html.theme--documenter-dark .button.is-danger.is-inverted:hover,html.theme--documenter-dark .button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}html.theme--documenter-dark .button.is-danger.is-inverted[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#9e1b0d}html.theme--documenter-dark .button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-danger.is-outlined{background-color:transparent;border-color:#9e1b0d;color:#9e1b0d}html.theme--documenter-dark .button.is-danger.is-outlined:hover,html.theme--documenter-dark .button.is-danger.is-outlined.is-hovered,html.theme--documenter-dark .button.is-danger.is-outlined:focus,html.theme--documenter-dark .button.is-danger.is-outlined.is-focused{background-color:#9e1b0d;border-color:#9e1b0d;color:#fff}html.theme--documenter-dark .button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #9e1b0d #9e1b0d !important}html.theme--documenter-dark .button.is-danger.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-danger.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-danger.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-danger.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}html.theme--documenter-dark .button.is-danger.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-outlined{background-color:transparent;border-color:#9e1b0d;box-shadow:none;color:#9e1b0d}html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined:hover,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-hovered,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined:focus,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#9e1b0d}html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading:hover::after,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading:focus::after,html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #9e1b0d #9e1b0d !important}html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}html.theme--documenter-dark .button.is-danger.is-light{background-color:#fdeeec;color:#ec311d}html.theme--documenter-dark .button.is-danger.is-light:hover,html.theme--documenter-dark .button.is-danger.is-light.is-hovered{background-color:#fce3e0;border-color:transparent;color:#ec311d}html.theme--documenter-dark .button.is-danger.is-light:active,html.theme--documenter-dark .button.is-danger.is-light.is-active{background-color:#fcd8d5;border-color:transparent;color:#ec311d}html.theme--documenter-dark .button.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.button{font-size:.75rem}html.theme--documenter-dark .button.is-small:not(.is-rounded),html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.button:not(.is-rounded){border-radius:3px}html.theme--documenter-dark .button.is-normal{font-size:1rem}html.theme--documenter-dark .button.is-medium{font-size:1.25rem}html.theme--documenter-dark .button.is-large{font-size:1.5rem}html.theme--documenter-dark .button[disabled],fieldset[disabled] html.theme--documenter-dark .button{background-color:#8c9b9d;border-color:#5e6d6f;box-shadow:none;opacity:.5}html.theme--documenter-dark .button.is-fullwidth{display:flex;width:100%}html.theme--documenter-dark .button.is-loading{color:transparent !important;pointer-events:none}html.theme--documenter-dark .button.is-loading::after{position:absolute;left:calc(50% - (1em * 0.5));top:calc(50% - (1em * 0.5));position:absolute !important}html.theme--documenter-dark .button.is-static{background-color:#282f2f;border-color:#5e6d6f;color:#dbdee0;box-shadow:none;pointer-events:none}html.theme--documenter-dark .button.is-rounded,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.button{border-radius:9999px;padding-left:calc(1em + 0.25em);padding-right:calc(1em + 0.25em)}html.theme--documenter-dark .buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--documenter-dark .buttons .button{margin-bottom:0.5rem}html.theme--documenter-dark .buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}html.theme--documenter-dark .buttons:last-child{margin-bottom:-0.5rem}html.theme--documenter-dark .buttons:not(:last-child){margin-bottom:1rem}html.theme--documenter-dark .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}html.theme--documenter-dark .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:3px}html.theme--documenter-dark .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}html.theme--documenter-dark .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}html.theme--documenter-dark .buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}html.theme--documenter-dark .buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}html.theme--documenter-dark .buttons.has-addons .button:last-child{margin-right:0}html.theme--documenter-dark .buttons.has-addons .button:hover,html.theme--documenter-dark .buttons.has-addons .button.is-hovered{z-index:2}html.theme--documenter-dark .buttons.has-addons .button:focus,html.theme--documenter-dark .buttons.has-addons .button.is-focused,html.theme--documenter-dark .buttons.has-addons .button:active,html.theme--documenter-dark .buttons.has-addons .button.is-active,html.theme--documenter-dark .buttons.has-addons .button.is-selected{z-index:3}html.theme--documenter-dark .buttons.has-addons .button:focus:hover,html.theme--documenter-dark .buttons.has-addons .button.is-focused:hover,html.theme--documenter-dark .buttons.has-addons .button:active:hover,html.theme--documenter-dark .buttons.has-addons .button.is-active:hover,html.theme--documenter-dark .buttons.has-addons .button.is-selected:hover{z-index:4}html.theme--documenter-dark .buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .buttons.is-centered{justify-content:center}html.theme--documenter-dark .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}html.theme--documenter-dark .buttons.is-right{justify-content:flex-end}html.theme--documenter-dark .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}@media screen and (max-width: 768px){html.theme--documenter-dark .button.is-responsive.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.5625rem}html.theme--documenter-dark .button.is-responsive,html.theme--documenter-dark .button.is-responsive.is-normal{font-size:.65625rem}html.theme--documenter-dark .button.is-responsive.is-medium{font-size:.75rem}html.theme--documenter-dark .button.is-responsive.is-large{font-size:1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .button.is-responsive.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.65625rem}html.theme--documenter-dark .button.is-responsive,html.theme--documenter-dark .button.is-responsive.is-normal{font-size:.75rem}html.theme--documenter-dark .button.is-responsive.is-medium{font-size:1rem}html.theme--documenter-dark .button.is-responsive.is-large{font-size:1.25rem}}html.theme--documenter-dark .container{flex-grow:1;margin:0 auto;position:relative;width:auto}html.theme--documenter-dark .container.is-fluid{max-width:none !important;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width: 1056px){html.theme--documenter-dark .container{max-width:992px}}@media screen and (max-width: 1215px){html.theme--documenter-dark .container.is-widescreen:not(.is-max-desktop){max-width:1152px}}@media screen and (max-width: 1407px){html.theme--documenter-dark .container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width: 1216px){html.theme--documenter-dark .container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width: 1408px){html.theme--documenter-dark .container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}html.theme--documenter-dark .content li+li{margin-top:0.25em}html.theme--documenter-dark .content p:not(:last-child),html.theme--documenter-dark .content dl:not(:last-child),html.theme--documenter-dark .content ol:not(:last-child),html.theme--documenter-dark .content ul:not(:last-child),html.theme--documenter-dark .content blockquote:not(:last-child),html.theme--documenter-dark .content pre:not(:last-child),html.theme--documenter-dark .content table:not(:last-child){margin-bottom:1em}html.theme--documenter-dark .content h1,html.theme--documenter-dark .content h2,html.theme--documenter-dark .content h3,html.theme--documenter-dark .content h4,html.theme--documenter-dark .content h5,html.theme--documenter-dark .content h6{color:#f2f2f2;font-weight:600;line-height:1.125}html.theme--documenter-dark .content h1{font-size:2em;margin-bottom:0.5em}html.theme--documenter-dark .content h1:not(:first-child){margin-top:1em}html.theme--documenter-dark .content h2{font-size:1.75em;margin-bottom:0.5714em}html.theme--documenter-dark .content h2:not(:first-child){margin-top:1.1428em}html.theme--documenter-dark .content h3{font-size:1.5em;margin-bottom:0.6666em}html.theme--documenter-dark .content h3:not(:first-child){margin-top:1.3333em}html.theme--documenter-dark .content h4{font-size:1.25em;margin-bottom:0.8em}html.theme--documenter-dark .content h5{font-size:1.125em;margin-bottom:0.8888em}html.theme--documenter-dark .content h6{font-size:1em;margin-bottom:1em}html.theme--documenter-dark .content blockquote{background-color:#282f2f;border-left:5px solid #5e6d6f;padding:1.25em 1.5em}html.theme--documenter-dark .content ol{list-style-position:outside;margin-left:2em;margin-top:1em}html.theme--documenter-dark .content ol:not([type]){list-style-type:decimal}html.theme--documenter-dark .content ol.is-lower-alpha:not([type]){list-style-type:lower-alpha}html.theme--documenter-dark .content ol.is-lower-roman:not([type]){list-style-type:lower-roman}html.theme--documenter-dark .content ol.is-upper-alpha:not([type]){list-style-type:upper-alpha}html.theme--documenter-dark .content ol.is-upper-roman:not([type]){list-style-type:upper-roman}html.theme--documenter-dark .content ul{list-style:disc outside;margin-left:2em;margin-top:1em}html.theme--documenter-dark .content ul ul{list-style-type:circle;margin-top:0.5em}html.theme--documenter-dark .content ul ul ul{list-style-type:square}html.theme--documenter-dark .content dd{margin-left:2em}html.theme--documenter-dark .content figure{margin-left:2em;margin-right:2em;text-align:center}html.theme--documenter-dark .content figure:not(:first-child){margin-top:2em}html.theme--documenter-dark .content figure:not(:last-child){margin-bottom:2em}html.theme--documenter-dark .content figure img{display:inline-block}html.theme--documenter-dark .content figure figcaption{font-style:italic}html.theme--documenter-dark .content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:0;white-space:pre;word-wrap:normal}html.theme--documenter-dark .content sup,html.theme--documenter-dark .content sub{font-size:75%}html.theme--documenter-dark .content table{width:100%}html.theme--documenter-dark .content table td,html.theme--documenter-dark .content table th{border:1px solid #5e6d6f;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--documenter-dark .content table th{color:#f2f2f2}html.theme--documenter-dark .content table th:not([align]){text-align:inherit}html.theme--documenter-dark .content table thead td,html.theme--documenter-dark .content table thead th{border-width:0 0 2px;color:#f2f2f2}html.theme--documenter-dark .content table tfoot td,html.theme--documenter-dark .content table tfoot th{border-width:2px 0 0;color:#f2f2f2}html.theme--documenter-dark .content table tbody tr:last-child td,html.theme--documenter-dark .content table tbody tr:last-child th{border-bottom-width:0}html.theme--documenter-dark .content .tabs li+li{margin-top:0}html.theme--documenter-dark .content.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.content{font-size:.75rem}html.theme--documenter-dark .content.is-normal{font-size:1rem}html.theme--documenter-dark .content.is-medium{font-size:1.25rem}html.theme--documenter-dark .content.is-large{font-size:1.5rem}html.theme--documenter-dark .icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}html.theme--documenter-dark .icon.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.icon{height:1rem;width:1rem}html.theme--documenter-dark .icon.is-medium{height:2rem;width:2rem}html.theme--documenter-dark .icon.is-large{height:3rem;width:3rem}html.theme--documenter-dark .icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}html.theme--documenter-dark .icon-text .icon{flex-grow:0;flex-shrink:0}html.theme--documenter-dark .icon-text .icon:not(:last-child){margin-right:.25em}html.theme--documenter-dark .icon-text .icon:not(:first-child){margin-left:.25em}html.theme--documenter-dark div.icon-text{display:flex}html.theme--documenter-dark .image,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img{display:block;position:relative}html.theme--documenter-dark .image img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img img{display:block;height:auto;width:100%}html.theme--documenter-dark .image img.is-rounded,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img img.is-rounded{border-radius:9999px}html.theme--documenter-dark .image.is-fullwidth,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-fullwidth{width:100%}html.theme--documenter-dark .image.is-square img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square img,html.theme--documenter-dark .image.is-square .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,html.theme--documenter-dark .image.is-1by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1 img,html.theme--documenter-dark .image.is-1by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,html.theme--documenter-dark .image.is-5by4 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4 img,html.theme--documenter-dark .image.is-5by4 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,html.theme--documenter-dark .image.is-4by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3 img,html.theme--documenter-dark .image.is-4by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,html.theme--documenter-dark .image.is-3by2 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2 img,html.theme--documenter-dark .image.is-3by2 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,html.theme--documenter-dark .image.is-5by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3 img,html.theme--documenter-dark .image.is-5by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,html.theme--documenter-dark .image.is-16by9 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9 img,html.theme--documenter-dark .image.is-16by9 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,html.theme--documenter-dark .image.is-2by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1 img,html.theme--documenter-dark .image.is-2by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,html.theme--documenter-dark .image.is-3by1 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1 img,html.theme--documenter-dark .image.is-3by1 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,html.theme--documenter-dark .image.is-4by5 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5 img,html.theme--documenter-dark .image.is-4by5 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,html.theme--documenter-dark .image.is-3by4 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4 img,html.theme--documenter-dark .image.is-3by4 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,html.theme--documenter-dark .image.is-2by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3 img,html.theme--documenter-dark .image.is-2by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,html.theme--documenter-dark .image.is-3by5 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5 img,html.theme--documenter-dark .image.is-3by5 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,html.theme--documenter-dark .image.is-9by16 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16 img,html.theme--documenter-dark .image.is-9by16 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,html.theme--documenter-dark .image.is-1by2 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2 img,html.theme--documenter-dark .image.is-1by2 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,html.theme--documenter-dark .image.is-1by3 img,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3 img,html.theme--documenter-dark .image.is-1by3 .has-ratio,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio{height:100%;width:100%}html.theme--documenter-dark .image.is-square,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-square,html.theme--documenter-dark .image.is-1by1,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by1{padding-top:100%}html.theme--documenter-dark .image.is-5by4,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by4{padding-top:80%}html.theme--documenter-dark .image.is-4by3,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by3{padding-top:75%}html.theme--documenter-dark .image.is-3by2,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by2{padding-top:66.6666%}html.theme--documenter-dark .image.is-5by3,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-5by3{padding-top:60%}html.theme--documenter-dark .image.is-16by9,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16by9{padding-top:56.25%}html.theme--documenter-dark .image.is-2by1,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by1{padding-top:50%}html.theme--documenter-dark .image.is-3by1,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by1{padding-top:33.3333%}html.theme--documenter-dark .image.is-4by5,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-4by5{padding-top:125%}html.theme--documenter-dark .image.is-3by4,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by4{padding-top:133.3333%}html.theme--documenter-dark .image.is-2by3,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-2by3{padding-top:150%}html.theme--documenter-dark .image.is-3by5,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-3by5{padding-top:166.6666%}html.theme--documenter-dark .image.is-9by16,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-9by16{padding-top:177.7777%}html.theme--documenter-dark .image.is-1by2,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by2{padding-top:200%}html.theme--documenter-dark .image.is-1by3,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-1by3{padding-top:300%}html.theme--documenter-dark .image.is-16x16,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-16x16{height:16px;width:16px}html.theme--documenter-dark .image.is-24x24,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-24x24{height:24px;width:24px}html.theme--documenter-dark .image.is-32x32,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-32x32{height:32px;width:32px}html.theme--documenter-dark .image.is-48x48,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-48x48{height:48px;width:48px}html.theme--documenter-dark .image.is-64x64,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-64x64{height:64px;width:64px}html.theme--documenter-dark .image.is-96x96,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-96x96{height:96px;width:96px}html.theme--documenter-dark .image.is-128x128,html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img.is-128x128{height:128px;width:128px}html.theme--documenter-dark .notification{background-color:#282f2f;border-radius:.4em;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}html.theme--documenter-dark .notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--documenter-dark .notification strong{color:currentColor}html.theme--documenter-dark .notification code,html.theme--documenter-dark .notification pre{background:#fff}html.theme--documenter-dark .notification pre code{background:transparent}html.theme--documenter-dark .notification>.delete{right:.5rem;position:absolute;top:0.5rem}html.theme--documenter-dark .notification .title,html.theme--documenter-dark .notification .subtitle,html.theme--documenter-dark .notification .content{color:currentColor}html.theme--documenter-dark .notification.is-white{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .notification.is-black{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .notification.is-light{background-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .notification.is-dark,html.theme--documenter-dark .content kbd.notification{background-color:#282f2f;color:#fff}html.theme--documenter-dark .notification.is-primary,html.theme--documenter-dark .docstring>section>a.notification.docs-sourcelink{background-color:#375a7f;color:#fff}html.theme--documenter-dark .notification.is-primary.is-light,html.theme--documenter-dark .docstring>section>a.notification.is-light.docs-sourcelink{background-color:#f1f5f9;color:#4d7eb2}html.theme--documenter-dark .notification.is-link{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .notification.is-link.is-light{background-color:#edfdf9;color:#15987e}html.theme--documenter-dark .notification.is-info{background-color:#024c7d;color:#fff}html.theme--documenter-dark .notification.is-info.is-light{background-color:#ebf7ff;color:#0e9dfb}html.theme--documenter-dark .notification.is-success{background-color:#008438;color:#fff}html.theme--documenter-dark .notification.is-success.is-light{background-color:#ebfff3;color:#00eb64}html.theme--documenter-dark .notification.is-warning{background-color:#ad8100;color:#fff}html.theme--documenter-dark .notification.is-warning.is-light{background-color:#fffaeb;color:#d19c00}html.theme--documenter-dark .notification.is-danger{background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .notification.is-danger.is-light{background-color:#fdeeec;color:#ec311d}html.theme--documenter-dark .progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:9999px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}html.theme--documenter-dark .progress::-webkit-progress-bar{background-color:#343c3d}html.theme--documenter-dark .progress::-webkit-progress-value{background-color:#dbdee0}html.theme--documenter-dark .progress::-moz-progress-bar{background-color:#dbdee0}html.theme--documenter-dark .progress::-ms-fill{background-color:#dbdee0;border:none}html.theme--documenter-dark .progress.is-white::-webkit-progress-value{background-color:#fff}html.theme--documenter-dark .progress.is-white::-moz-progress-bar{background-color:#fff}html.theme--documenter-dark .progress.is-white::-ms-fill{background-color:#fff}html.theme--documenter-dark .progress.is-white:indeterminate{background-image:linear-gradient(to right, #fff 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-black::-webkit-progress-value{background-color:#0a0a0a}html.theme--documenter-dark .progress.is-black::-moz-progress-bar{background-color:#0a0a0a}html.theme--documenter-dark .progress.is-black::-ms-fill{background-color:#0a0a0a}html.theme--documenter-dark .progress.is-black:indeterminate{background-image:linear-gradient(to right, #0a0a0a 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-light::-webkit-progress-value{background-color:#ecf0f1}html.theme--documenter-dark .progress.is-light::-moz-progress-bar{background-color:#ecf0f1}html.theme--documenter-dark .progress.is-light::-ms-fill{background-color:#ecf0f1}html.theme--documenter-dark .progress.is-light:indeterminate{background-image:linear-gradient(to right, #ecf0f1 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-dark::-webkit-progress-value,html.theme--documenter-dark .content kbd.progress::-webkit-progress-value{background-color:#282f2f}html.theme--documenter-dark .progress.is-dark::-moz-progress-bar,html.theme--documenter-dark .content kbd.progress::-moz-progress-bar{background-color:#282f2f}html.theme--documenter-dark .progress.is-dark::-ms-fill,html.theme--documenter-dark .content kbd.progress::-ms-fill{background-color:#282f2f}html.theme--documenter-dark .progress.is-dark:indeterminate,html.theme--documenter-dark .content kbd.progress:indeterminate{background-image:linear-gradient(to right, #282f2f 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-primary::-webkit-progress-value,html.theme--documenter-dark .docstring>section>a.progress.docs-sourcelink::-webkit-progress-value{background-color:#375a7f}html.theme--documenter-dark .progress.is-primary::-moz-progress-bar,html.theme--documenter-dark .docstring>section>a.progress.docs-sourcelink::-moz-progress-bar{background-color:#375a7f}html.theme--documenter-dark .progress.is-primary::-ms-fill,html.theme--documenter-dark .docstring>section>a.progress.docs-sourcelink::-ms-fill{background-color:#375a7f}html.theme--documenter-dark .progress.is-primary:indeterminate,html.theme--documenter-dark .docstring>section>a.progress.docs-sourcelink:indeterminate{background-image:linear-gradient(to right, #375a7f 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-link::-webkit-progress-value{background-color:#1abc9c}html.theme--documenter-dark .progress.is-link::-moz-progress-bar{background-color:#1abc9c}html.theme--documenter-dark .progress.is-link::-ms-fill{background-color:#1abc9c}html.theme--documenter-dark .progress.is-link:indeterminate{background-image:linear-gradient(to right, #1abc9c 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-info::-webkit-progress-value{background-color:#024c7d}html.theme--documenter-dark .progress.is-info::-moz-progress-bar{background-color:#024c7d}html.theme--documenter-dark .progress.is-info::-ms-fill{background-color:#024c7d}html.theme--documenter-dark .progress.is-info:indeterminate{background-image:linear-gradient(to right, #024c7d 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-success::-webkit-progress-value{background-color:#008438}html.theme--documenter-dark .progress.is-success::-moz-progress-bar{background-color:#008438}html.theme--documenter-dark .progress.is-success::-ms-fill{background-color:#008438}html.theme--documenter-dark .progress.is-success:indeterminate{background-image:linear-gradient(to right, #008438 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-warning::-webkit-progress-value{background-color:#ad8100}html.theme--documenter-dark .progress.is-warning::-moz-progress-bar{background-color:#ad8100}html.theme--documenter-dark .progress.is-warning::-ms-fill{background-color:#ad8100}html.theme--documenter-dark .progress.is-warning:indeterminate{background-image:linear-gradient(to right, #ad8100 30%, #343c3d 30%)}html.theme--documenter-dark .progress.is-danger::-webkit-progress-value{background-color:#9e1b0d}html.theme--documenter-dark .progress.is-danger::-moz-progress-bar{background-color:#9e1b0d}html.theme--documenter-dark .progress.is-danger::-ms-fill{background-color:#9e1b0d}html.theme--documenter-dark .progress.is-danger:indeterminate{background-image:linear-gradient(to right, #9e1b0d 30%, #343c3d 30%)}html.theme--documenter-dark .progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:#343c3d;background-image:linear-gradient(to right, #fff 30%, #343c3d 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}html.theme--documenter-dark .progress:indeterminate::-webkit-progress-bar{background-color:transparent}html.theme--documenter-dark .progress:indeterminate::-moz-progress-bar{background-color:transparent}html.theme--documenter-dark .progress:indeterminate::-ms-fill{animation-name:none}html.theme--documenter-dark .progress.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.progress{height:.75rem}html.theme--documenter-dark .progress.is-medium{height:1.25rem}html.theme--documenter-dark .progress.is-large{height:1.5rem}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}html.theme--documenter-dark .table{background-color:#343c3d;color:#fff}html.theme--documenter-dark .table td,html.theme--documenter-dark .table th{border:1px solid #5e6d6f;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}html.theme--documenter-dark .table td.is-white,html.theme--documenter-dark .table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--documenter-dark .table td.is-black,html.theme--documenter-dark .table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--documenter-dark .table td.is-light,html.theme--documenter-dark .table th.is-light{background-color:#ecf0f1;border-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .table td.is-dark,html.theme--documenter-dark .table th.is-dark{background-color:#282f2f;border-color:#282f2f;color:#fff}html.theme--documenter-dark .table td.is-primary,html.theme--documenter-dark .table th.is-primary{background-color:#375a7f;border-color:#375a7f;color:#fff}html.theme--documenter-dark .table td.is-link,html.theme--documenter-dark .table th.is-link{background-color:#1abc9c;border-color:#1abc9c;color:#fff}html.theme--documenter-dark .table td.is-info,html.theme--documenter-dark .table th.is-info{background-color:#024c7d;border-color:#024c7d;color:#fff}html.theme--documenter-dark .table td.is-success,html.theme--documenter-dark .table th.is-success{background-color:#008438;border-color:#008438;color:#fff}html.theme--documenter-dark .table td.is-warning,html.theme--documenter-dark .table th.is-warning{background-color:#ad8100;border-color:#ad8100;color:#fff}html.theme--documenter-dark .table td.is-danger,html.theme--documenter-dark .table th.is-danger{background-color:#9e1b0d;border-color:#9e1b0d;color:#fff}html.theme--documenter-dark .table td.is-narrow,html.theme--documenter-dark .table th.is-narrow{white-space:nowrap;width:1%}html.theme--documenter-dark .table td.is-selected,html.theme--documenter-dark .table th.is-selected{background-color:#375a7f;color:#fff}html.theme--documenter-dark .table td.is-selected a,html.theme--documenter-dark .table td.is-selected strong,html.theme--documenter-dark .table th.is-selected a,html.theme--documenter-dark .table th.is-selected strong{color:currentColor}html.theme--documenter-dark .table td.is-vcentered,html.theme--documenter-dark .table th.is-vcentered{vertical-align:middle}html.theme--documenter-dark .table th{color:#f2f2f2}html.theme--documenter-dark .table th:not([align]){text-align:left}html.theme--documenter-dark .table tr.is-selected{background-color:#375a7f;color:#fff}html.theme--documenter-dark .table tr.is-selected a,html.theme--documenter-dark .table tr.is-selected strong{color:currentColor}html.theme--documenter-dark .table tr.is-selected td,html.theme--documenter-dark .table tr.is-selected th{border-color:#fff;color:currentColor}html.theme--documenter-dark .table thead{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .table thead td,html.theme--documenter-dark .table thead th{border-width:0 0 2px;color:#f2f2f2}html.theme--documenter-dark .table tfoot{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .table tfoot td,html.theme--documenter-dark .table tfoot th{border-width:2px 0 0;color:#f2f2f2}html.theme--documenter-dark .table tbody{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .table tbody tr:last-child td,html.theme--documenter-dark .table tbody tr:last-child th{border-bottom-width:0}html.theme--documenter-dark .table.is-bordered td,html.theme--documenter-dark .table.is-bordered th{border-width:1px}html.theme--documenter-dark .table.is-bordered tr:last-child td,html.theme--documenter-dark .table.is-bordered tr:last-child th{border-bottom-width:1px}html.theme--documenter-dark .table.is-fullwidth{width:100%}html.theme--documenter-dark .table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#282f2f}html.theme--documenter-dark .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#282f2f}html.theme--documenter-dark .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#2d3435}html.theme--documenter-dark .table.is-narrow td,html.theme--documenter-dark .table.is-narrow th{padding:0.25em 0.5em}html.theme--documenter-dark .table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#282f2f}html.theme--documenter-dark .table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}html.theme--documenter-dark .tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--documenter-dark .tags .tag,html.theme--documenter-dark .tags .content kbd,html.theme--documenter-dark .content .tags kbd,html.theme--documenter-dark .tags .docstring>section>a.docs-sourcelink{margin-bottom:0.5rem}html.theme--documenter-dark .tags .tag:not(:last-child),html.theme--documenter-dark .tags .content kbd:not(:last-child),html.theme--documenter-dark .content .tags kbd:not(:last-child),html.theme--documenter-dark .tags .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:.5rem}html.theme--documenter-dark .tags:last-child{margin-bottom:-0.5rem}html.theme--documenter-dark .tags:not(:last-child){margin-bottom:1rem}html.theme--documenter-dark .tags.are-medium .tag:not(.is-normal):not(.is-large),html.theme--documenter-dark .tags.are-medium .content kbd:not(.is-normal):not(.is-large),html.theme--documenter-dark .content .tags.are-medium kbd:not(.is-normal):not(.is-large),html.theme--documenter-dark .tags.are-medium .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-large){font-size:1rem}html.theme--documenter-dark .tags.are-large .tag:not(.is-normal):not(.is-medium),html.theme--documenter-dark .tags.are-large .content kbd:not(.is-normal):not(.is-medium),html.theme--documenter-dark .content .tags.are-large kbd:not(.is-normal):not(.is-medium),html.theme--documenter-dark .tags.are-large .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-medium){font-size:1.25rem}html.theme--documenter-dark .tags.is-centered{justify-content:center}html.theme--documenter-dark .tags.is-centered .tag,html.theme--documenter-dark .tags.is-centered .content kbd,html.theme--documenter-dark .content .tags.is-centered kbd,html.theme--documenter-dark .tags.is-centered .docstring>section>a.docs-sourcelink{margin-right:0.25rem;margin-left:0.25rem}html.theme--documenter-dark .tags.is-right{justify-content:flex-end}html.theme--documenter-dark .tags.is-right .tag:not(:first-child),html.theme--documenter-dark .tags.is-right .content kbd:not(:first-child),html.theme--documenter-dark .content .tags.is-right kbd:not(:first-child),html.theme--documenter-dark .tags.is-right .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0.5rem}html.theme--documenter-dark .tags.is-right .tag:not(:last-child),html.theme--documenter-dark .tags.is-right .content kbd:not(:last-child),html.theme--documenter-dark .content .tags.is-right kbd:not(:last-child),html.theme--documenter-dark .tags.is-right .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0}html.theme--documenter-dark .tags.has-addons .tag,html.theme--documenter-dark .tags.has-addons .content kbd,html.theme--documenter-dark .content .tags.has-addons kbd,html.theme--documenter-dark .tags.has-addons .docstring>section>a.docs-sourcelink{margin-right:0}html.theme--documenter-dark .tags.has-addons .tag:not(:first-child),html.theme--documenter-dark .tags.has-addons .content kbd:not(:first-child),html.theme--documenter-dark .content .tags.has-addons kbd:not(:first-child),html.theme--documenter-dark .tags.has-addons .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}html.theme--documenter-dark .tags.has-addons .tag:not(:last-child),html.theme--documenter-dark .tags.has-addons .content kbd:not(:last-child),html.theme--documenter-dark .content .tags.has-addons kbd:not(:last-child),html.theme--documenter-dark .tags.has-addons .docstring>section>a.docs-sourcelink:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}html.theme--documenter-dark .tag:not(body),html.theme--documenter-dark .content kbd:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body){align-items:center;background-color:#282f2f;border-radius:.4em;color:#fff;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:0.75em;padding-right:0.75em;white-space:nowrap}html.theme--documenter-dark .tag:not(body) .delete,html.theme--documenter-dark .content kbd:not(body) .delete,html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .delete{margin-left:.25rem;margin-right:-.375rem}html.theme--documenter-dark .tag.is-white:not(body),html.theme--documenter-dark .content kbd.is-white:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-white:not(body){background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .tag.is-black:not(body),html.theme--documenter-dark .content kbd.is-black:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-black:not(body){background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .tag.is-light:not(body),html.theme--documenter-dark .content kbd.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .tag.is-dark:not(body),html.theme--documenter-dark .content kbd:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-dark:not(body),html.theme--documenter-dark .content .docstring>section>kbd:not(body){background-color:#282f2f;color:#fff}html.theme--documenter-dark .tag.is-primary:not(body),html.theme--documenter-dark .content kbd.is-primary:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body){background-color:#375a7f;color:#fff}html.theme--documenter-dark .tag.is-primary.is-light:not(body),html.theme--documenter-dark .content kbd.is-primary.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#f1f5f9;color:#4d7eb2}html.theme--documenter-dark .tag.is-link:not(body),html.theme--documenter-dark .content kbd.is-link:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-link:not(body){background-color:#1abc9c;color:#fff}html.theme--documenter-dark .tag.is-link.is-light:not(body),html.theme--documenter-dark .content kbd.is-link.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-link.is-light:not(body){background-color:#edfdf9;color:#15987e}html.theme--documenter-dark .tag.is-info:not(body),html.theme--documenter-dark .content kbd.is-info:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-info:not(body){background-color:#024c7d;color:#fff}html.theme--documenter-dark .tag.is-info.is-light:not(body),html.theme--documenter-dark .content kbd.is-info.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-info.is-light:not(body){background-color:#ebf7ff;color:#0e9dfb}html.theme--documenter-dark .tag.is-success:not(body),html.theme--documenter-dark .content kbd.is-success:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-success:not(body){background-color:#008438;color:#fff}html.theme--documenter-dark .tag.is-success.is-light:not(body),html.theme--documenter-dark .content kbd.is-success.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-success.is-light:not(body){background-color:#ebfff3;color:#00eb64}html.theme--documenter-dark .tag.is-warning:not(body),html.theme--documenter-dark .content kbd.is-warning:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-warning:not(body){background-color:#ad8100;color:#fff}html.theme--documenter-dark .tag.is-warning.is-light:not(body),html.theme--documenter-dark .content kbd.is-warning.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-warning.is-light:not(body){background-color:#fffaeb;color:#d19c00}html.theme--documenter-dark .tag.is-danger:not(body),html.theme--documenter-dark .content kbd.is-danger:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-danger:not(body){background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .tag.is-danger.is-light:not(body),html.theme--documenter-dark .content kbd.is-danger.is-light:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-danger.is-light:not(body){background-color:#fdeeec;color:#ec311d}html.theme--documenter-dark .tag.is-normal:not(body),html.theme--documenter-dark .content kbd.is-normal:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-normal:not(body){font-size:.75rem}html.theme--documenter-dark .tag.is-medium:not(body),html.theme--documenter-dark .content kbd.is-medium:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-medium:not(body){font-size:1rem}html.theme--documenter-dark .tag.is-large:not(body),html.theme--documenter-dark .content kbd.is-large:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-large:not(body){font-size:1.25rem}html.theme--documenter-dark .tag:not(body) .icon:first-child:not(:last-child),html.theme--documenter-dark .content kbd:not(body) .icon:first-child:not(:last-child),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}html.theme--documenter-dark .tag:not(body) .icon:last-child:not(:first-child),html.theme--documenter-dark .content kbd:not(body) .icon:last-child:not(:first-child),html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}html.theme--documenter-dark .tag:not(body) .icon:first-child:last-child,html.theme--documenter-dark .content kbd:not(body) .icon:first-child:last-child,html.theme--documenter-dark .docstring>section>a.docs-sourcelink:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}html.theme--documenter-dark .tag.is-delete:not(body),html.theme--documenter-dark .content kbd.is-delete:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body){margin-left:1px;padding:0;position:relative;width:2em}html.theme--documenter-dark .tag.is-delete:not(body)::before,html.theme--documenter-dark .content kbd.is-delete:not(body)::before,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::before,html.theme--documenter-dark .tag.is-delete:not(body)::after,html.theme--documenter-dark .content kbd.is-delete:not(body)::after,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}html.theme--documenter-dark .tag.is-delete:not(body)::before,html.theme--documenter-dark .content kbd.is-delete:not(body)::before,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::before{height:1px;width:50%}html.theme--documenter-dark .tag.is-delete:not(body)::after,html.theme--documenter-dark .content kbd.is-delete:not(body)::after,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body)::after{height:50%;width:1px}html.theme--documenter-dark .tag.is-delete:not(body):hover,html.theme--documenter-dark .content kbd.is-delete:not(body):hover,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body):hover,html.theme--documenter-dark .tag.is-delete:not(body):focus,html.theme--documenter-dark .content kbd.is-delete:not(body):focus,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body):focus{background-color:#1d2122}html.theme--documenter-dark .tag.is-delete:not(body):active,html.theme--documenter-dark .content kbd.is-delete:not(body):active,html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-delete:not(body):active{background-color:#111414}html.theme--documenter-dark .tag.is-rounded:not(body),html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:not(body),html.theme--documenter-dark .content kbd.is-rounded:not(body),html.theme--documenter-dark #documenter .docs-sidebar .content form.docs-search>input:not(body),html.theme--documenter-dark .docstring>section>a.docs-sourcelink.is-rounded:not(body){border-radius:9999px}html.theme--documenter-dark a.tag:hover,html.theme--documenter-dark .docstring>section>a.docs-sourcelink:hover{text-decoration:underline}html.theme--documenter-dark .title,html.theme--documenter-dark .subtitle{word-break:break-word}html.theme--documenter-dark .title em,html.theme--documenter-dark .title span,html.theme--documenter-dark .subtitle em,html.theme--documenter-dark .subtitle span{font-weight:inherit}html.theme--documenter-dark .title sub,html.theme--documenter-dark .subtitle sub{font-size:.75em}html.theme--documenter-dark .title sup,html.theme--documenter-dark .subtitle sup{font-size:.75em}html.theme--documenter-dark .title .tag,html.theme--documenter-dark .title .content kbd,html.theme--documenter-dark .content .title kbd,html.theme--documenter-dark .title .docstring>section>a.docs-sourcelink,html.theme--documenter-dark .subtitle .tag,html.theme--documenter-dark .subtitle .content kbd,html.theme--documenter-dark .content .subtitle kbd,html.theme--documenter-dark .subtitle .docstring>section>a.docs-sourcelink{vertical-align:middle}html.theme--documenter-dark .title{color:#fff;font-size:2rem;font-weight:500;line-height:1.125}html.theme--documenter-dark .title strong{color:inherit;font-weight:inherit}html.theme--documenter-dark .title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}html.theme--documenter-dark .title.is-1{font-size:3rem}html.theme--documenter-dark .title.is-2{font-size:2.5rem}html.theme--documenter-dark .title.is-3{font-size:2rem}html.theme--documenter-dark .title.is-4{font-size:1.5rem}html.theme--documenter-dark .title.is-5{font-size:1.25rem}html.theme--documenter-dark .title.is-6{font-size:1rem}html.theme--documenter-dark .title.is-7{font-size:.75rem}html.theme--documenter-dark .subtitle{color:#8c9b9d;font-size:1.25rem;font-weight:400;line-height:1.25}html.theme--documenter-dark .subtitle strong{color:#8c9b9d;font-weight:600}html.theme--documenter-dark .subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}html.theme--documenter-dark .subtitle.is-1{font-size:3rem}html.theme--documenter-dark .subtitle.is-2{font-size:2.5rem}html.theme--documenter-dark .subtitle.is-3{font-size:2rem}html.theme--documenter-dark .subtitle.is-4{font-size:1.5rem}html.theme--documenter-dark .subtitle.is-5{font-size:1.25rem}html.theme--documenter-dark .subtitle.is-6{font-size:1rem}html.theme--documenter-dark .subtitle.is-7{font-size:.75rem}html.theme--documenter-dark .heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}html.theme--documenter-dark .number{align-items:center;background-color:#282f2f;border-radius:9999px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:0.25rem 0.5rem;text-align:center;vertical-align:top}html.theme--documenter-dark .select select,html.theme--documenter-dark .textarea,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{background-color:#1f2424;border-color:#5e6d6f;border-radius:.4em;color:#dbdee0}html.theme--documenter-dark .select select::-moz-placeholder,html.theme--documenter-dark .textarea::-moz-placeholder,html.theme--documenter-dark .input::-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:#868c98}html.theme--documenter-dark .select select::-webkit-input-placeholder,html.theme--documenter-dark .textarea::-webkit-input-placeholder,html.theme--documenter-dark .input::-webkit-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:#868c98}html.theme--documenter-dark .select select:-moz-placeholder,html.theme--documenter-dark .textarea:-moz-placeholder,html.theme--documenter-dark .input:-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:#868c98}html.theme--documenter-dark .select select:-ms-input-placeholder,html.theme--documenter-dark .textarea:-ms-input-placeholder,html.theme--documenter-dark .input:-ms-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:#868c98}html.theme--documenter-dark .select select:hover,html.theme--documenter-dark .textarea:hover,html.theme--documenter-dark .input:hover,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:hover,html.theme--documenter-dark .select select.is-hovered,html.theme--documenter-dark .is-hovered.textarea,html.theme--documenter-dark .is-hovered.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-hovered{border-color:#8c9b9d}html.theme--documenter-dark .select select:focus,html.theme--documenter-dark .textarea:focus,html.theme--documenter-dark .input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:focus,html.theme--documenter-dark .select select.is-focused,html.theme--documenter-dark .is-focused.textarea,html.theme--documenter-dark .is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .select select:active,html.theme--documenter-dark .textarea:active,html.theme--documenter-dark .input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:active,html.theme--documenter-dark .select select.is-active,html.theme--documenter-dark .is-active.textarea,html.theme--documenter-dark .is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{border-color:#1abc9c;box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .select select[disabled],html.theme--documenter-dark .textarea[disabled],html.theme--documenter-dark .input[disabled],html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled],fieldset[disabled] html.theme--documenter-dark .select select,fieldset[disabled] html.theme--documenter-dark .textarea,fieldset[disabled] html.theme--documenter-dark .input,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{background-color:#8c9b9d;border-color:#282f2f;box-shadow:none;color:#fff}html.theme--documenter-dark .select select[disabled]::-moz-placeholder,html.theme--documenter-dark .textarea[disabled]::-moz-placeholder,html.theme--documenter-dark .input[disabled]::-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .select select::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .input::-moz-placeholder,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .select select[disabled]::-webkit-input-placeholder,html.theme--documenter-dark .textarea[disabled]::-webkit-input-placeholder,html.theme--documenter-dark .input[disabled]::-webkit-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark .select select::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark .input::-webkit-input-placeholder,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .select select[disabled]:-moz-placeholder,html.theme--documenter-dark .textarea[disabled]:-moz-placeholder,html.theme--documenter-dark .input[disabled]:-moz-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .select select:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark .input:-moz-placeholder,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .select select[disabled]:-ms-input-placeholder,html.theme--documenter-dark .textarea[disabled]:-ms-input-placeholder,html.theme--documenter-dark .input[disabled]:-ms-input-placeholder,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[disabled]:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark .select select:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark .textarea:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark .input:-ms-input-placeholder,fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:rgba(255,255,255,0.3)}html.theme--documenter-dark .textarea,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{box-shadow:inset 0 0.0625em 0.125em rgba(10,10,10,0.05);max-width:100%;width:100%}html.theme--documenter-dark .textarea[readonly],html.theme--documenter-dark .input[readonly],html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input[readonly]{box-shadow:none}html.theme--documenter-dark .is-white.textarea,html.theme--documenter-dark .is-white.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-white{border-color:#fff}html.theme--documenter-dark .is-white.textarea:focus,html.theme--documenter-dark .is-white.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-white:focus,html.theme--documenter-dark .is-white.is-focused.textarea,html.theme--documenter-dark .is-white.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-white.textarea:active,html.theme--documenter-dark .is-white.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-white:active,html.theme--documenter-dark .is-white.is-active.textarea,html.theme--documenter-dark .is-white.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--documenter-dark .is-black.textarea,html.theme--documenter-dark .is-black.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-black{border-color:#0a0a0a}html.theme--documenter-dark .is-black.textarea:focus,html.theme--documenter-dark .is-black.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-black:focus,html.theme--documenter-dark .is-black.is-focused.textarea,html.theme--documenter-dark .is-black.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-black.textarea:active,html.theme--documenter-dark .is-black.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-black:active,html.theme--documenter-dark .is-black.is-active.textarea,html.theme--documenter-dark .is-black.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--documenter-dark .is-light.textarea,html.theme--documenter-dark .is-light.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-light{border-color:#ecf0f1}html.theme--documenter-dark .is-light.textarea:focus,html.theme--documenter-dark .is-light.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-light:focus,html.theme--documenter-dark .is-light.is-focused.textarea,html.theme--documenter-dark .is-light.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-light.textarea:active,html.theme--documenter-dark .is-light.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-light:active,html.theme--documenter-dark .is-light.is-active.textarea,html.theme--documenter-dark .is-light.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(236,240,241,0.25)}html.theme--documenter-dark .is-dark.textarea,html.theme--documenter-dark .content kbd.textarea,html.theme--documenter-dark .is-dark.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-dark,html.theme--documenter-dark .content kbd.input{border-color:#282f2f}html.theme--documenter-dark .is-dark.textarea:focus,html.theme--documenter-dark .content kbd.textarea:focus,html.theme--documenter-dark .is-dark.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-dark:focus,html.theme--documenter-dark .content kbd.input:focus,html.theme--documenter-dark .is-dark.is-focused.textarea,html.theme--documenter-dark .content kbd.is-focused.textarea,html.theme--documenter-dark .is-dark.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .content kbd.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar .content form.docs-search>input.is-focused,html.theme--documenter-dark .is-dark.textarea:active,html.theme--documenter-dark .content kbd.textarea:active,html.theme--documenter-dark .is-dark.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-dark:active,html.theme--documenter-dark .content kbd.input:active,html.theme--documenter-dark .is-dark.is-active.textarea,html.theme--documenter-dark .content kbd.is-active.textarea,html.theme--documenter-dark .is-dark.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--documenter-dark .content kbd.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar .content form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(40,47,47,0.25)}html.theme--documenter-dark .is-primary.textarea,html.theme--documenter-dark .docstring>section>a.textarea.docs-sourcelink,html.theme--documenter-dark .is-primary.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-primary,html.theme--documenter-dark .docstring>section>a.input.docs-sourcelink{border-color:#375a7f}html.theme--documenter-dark .is-primary.textarea:focus,html.theme--documenter-dark .docstring>section>a.textarea.docs-sourcelink:focus,html.theme--documenter-dark .is-primary.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-primary:focus,html.theme--documenter-dark .docstring>section>a.input.docs-sourcelink:focus,html.theme--documenter-dark .is-primary.is-focused.textarea,html.theme--documenter-dark .docstring>section>a.is-focused.textarea.docs-sourcelink,html.theme--documenter-dark .is-primary.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .docstring>section>a.is-focused.input.docs-sourcelink,html.theme--documenter-dark .is-primary.textarea:active,html.theme--documenter-dark .docstring>section>a.textarea.docs-sourcelink:active,html.theme--documenter-dark .is-primary.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-primary:active,html.theme--documenter-dark .docstring>section>a.input.docs-sourcelink:active,html.theme--documenter-dark .is-primary.is-active.textarea,html.theme--documenter-dark .docstring>section>a.is-active.textarea.docs-sourcelink,html.theme--documenter-dark .is-primary.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active,html.theme--documenter-dark .docstring>section>a.is-active.input.docs-sourcelink{box-shadow:0 0 0 0.125em rgba(55,90,127,0.25)}html.theme--documenter-dark .is-link.textarea,html.theme--documenter-dark .is-link.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-link{border-color:#1abc9c}html.theme--documenter-dark .is-link.textarea:focus,html.theme--documenter-dark .is-link.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-link:focus,html.theme--documenter-dark .is-link.is-focused.textarea,html.theme--documenter-dark .is-link.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-link.textarea:active,html.theme--documenter-dark .is-link.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-link:active,html.theme--documenter-dark .is-link.is-active.textarea,html.theme--documenter-dark .is-link.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .is-info.textarea,html.theme--documenter-dark .is-info.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-info{border-color:#024c7d}html.theme--documenter-dark .is-info.textarea:focus,html.theme--documenter-dark .is-info.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-info:focus,html.theme--documenter-dark .is-info.is-focused.textarea,html.theme--documenter-dark .is-info.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-info.textarea:active,html.theme--documenter-dark .is-info.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-info:active,html.theme--documenter-dark .is-info.is-active.textarea,html.theme--documenter-dark .is-info.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(2,76,125,0.25)}html.theme--documenter-dark .is-success.textarea,html.theme--documenter-dark .is-success.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-success{border-color:#008438}html.theme--documenter-dark .is-success.textarea:focus,html.theme--documenter-dark .is-success.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-success:focus,html.theme--documenter-dark .is-success.is-focused.textarea,html.theme--documenter-dark .is-success.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-success.textarea:active,html.theme--documenter-dark .is-success.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-success:active,html.theme--documenter-dark .is-success.is-active.textarea,html.theme--documenter-dark .is-success.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(0,132,56,0.25)}html.theme--documenter-dark .is-warning.textarea,html.theme--documenter-dark .is-warning.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-warning{border-color:#ad8100}html.theme--documenter-dark .is-warning.textarea:focus,html.theme--documenter-dark .is-warning.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-warning:focus,html.theme--documenter-dark .is-warning.is-focused.textarea,html.theme--documenter-dark .is-warning.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-warning.textarea:active,html.theme--documenter-dark .is-warning.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-warning:active,html.theme--documenter-dark .is-warning.is-active.textarea,html.theme--documenter-dark .is-warning.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(173,129,0,0.25)}html.theme--documenter-dark .is-danger.textarea,html.theme--documenter-dark .is-danger.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-danger{border-color:#9e1b0d}html.theme--documenter-dark .is-danger.textarea:focus,html.theme--documenter-dark .is-danger.input:focus,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-danger:focus,html.theme--documenter-dark .is-danger.is-focused.textarea,html.theme--documenter-dark .is-danger.is-focused.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-focused,html.theme--documenter-dark .is-danger.textarea:active,html.theme--documenter-dark .is-danger.input:active,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-danger:active,html.theme--documenter-dark .is-danger.is-active.textarea,html.theme--documenter-dark .is-danger.is-active.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(158,27,13,0.25)}html.theme--documenter-dark .is-small.textarea,html.theme--documenter-dark .is-small.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{border-radius:3px;font-size:.75rem}html.theme--documenter-dark .is-medium.textarea,html.theme--documenter-dark .is-medium.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-medium{font-size:1.25rem}html.theme--documenter-dark .is-large.textarea,html.theme--documenter-dark .is-large.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-large{font-size:1.5rem}html.theme--documenter-dark .is-fullwidth.textarea,html.theme--documenter-dark .is-fullwidth.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-fullwidth{display:block;width:100%}html.theme--documenter-dark .is-inline.textarea,html.theme--documenter-dark .is-inline.input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-inline{display:inline;width:auto}html.theme--documenter-dark .input.is-rounded,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{border-radius:9999px;padding-left:calc(calc(0.75em - 1px) + 0.375em);padding-right:calc(calc(0.75em - 1px) + 0.375em)}html.theme--documenter-dark .input.is-static,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}html.theme--documenter-dark .textarea{display:block;max-width:100%;min-width:100%;padding:calc(0.75em - 1px);resize:vertical}html.theme--documenter-dark .textarea:not([rows]){max-height:40em;min-height:8em}html.theme--documenter-dark .textarea[rows]{height:initial}html.theme--documenter-dark .textarea.has-fixed-size{resize:none}html.theme--documenter-dark .radio,html.theme--documenter-dark .checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}html.theme--documenter-dark .radio input,html.theme--documenter-dark .checkbox input{cursor:pointer}html.theme--documenter-dark .radio:hover,html.theme--documenter-dark .checkbox:hover{color:#8c9b9d}html.theme--documenter-dark .radio[disabled],html.theme--documenter-dark .checkbox[disabled],fieldset[disabled] html.theme--documenter-dark .radio,fieldset[disabled] html.theme--documenter-dark .checkbox,html.theme--documenter-dark .radio input[disabled],html.theme--documenter-dark .checkbox input[disabled]{color:#fff;cursor:not-allowed}html.theme--documenter-dark .radio+.radio{margin-left:.5em}html.theme--documenter-dark .select{display:inline-block;max-width:100%;position:relative;vertical-align:top}html.theme--documenter-dark .select:not(.is-multiple){height:2.5em}html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading)::after{border-color:#1abc9c;right:1.125em;z-index:4}html.theme--documenter-dark .select.is-rounded select,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.select select{border-radius:9999px;padding-left:1em}html.theme--documenter-dark .select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}html.theme--documenter-dark .select select::-ms-expand{display:none}html.theme--documenter-dark .select select[disabled]:hover,fieldset[disabled] html.theme--documenter-dark .select select:hover{border-color:#282f2f}html.theme--documenter-dark .select select:not([multiple]){padding-right:2.5em}html.theme--documenter-dark .select select[multiple]{height:auto;padding:0}html.theme--documenter-dark .select select[multiple] option{padding:0.5em 1em}html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading):hover::after{border-color:#8c9b9d}html.theme--documenter-dark .select.is-white:not(:hover)::after{border-color:#fff}html.theme--documenter-dark .select.is-white select{border-color:#fff}html.theme--documenter-dark .select.is-white select:hover,html.theme--documenter-dark .select.is-white select.is-hovered{border-color:#f2f2f2}html.theme--documenter-dark .select.is-white select:focus,html.theme--documenter-dark .select.is-white select.is-focused,html.theme--documenter-dark .select.is-white select:active,html.theme--documenter-dark .select.is-white select.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}html.theme--documenter-dark .select.is-black:not(:hover)::after{border-color:#0a0a0a}html.theme--documenter-dark .select.is-black select{border-color:#0a0a0a}html.theme--documenter-dark .select.is-black select:hover,html.theme--documenter-dark .select.is-black select.is-hovered{border-color:#000}html.theme--documenter-dark .select.is-black select:focus,html.theme--documenter-dark .select.is-black select.is-focused,html.theme--documenter-dark .select.is-black select:active,html.theme--documenter-dark .select.is-black select.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}html.theme--documenter-dark .select.is-light:not(:hover)::after{border-color:#ecf0f1}html.theme--documenter-dark .select.is-light select{border-color:#ecf0f1}html.theme--documenter-dark .select.is-light select:hover,html.theme--documenter-dark .select.is-light select.is-hovered{border-color:#dde4e6}html.theme--documenter-dark .select.is-light select:focus,html.theme--documenter-dark .select.is-light select.is-focused,html.theme--documenter-dark .select.is-light select:active,html.theme--documenter-dark .select.is-light select.is-active{box-shadow:0 0 0 0.125em rgba(236,240,241,0.25)}html.theme--documenter-dark .select.is-dark:not(:hover)::after,html.theme--documenter-dark .content kbd.select:not(:hover)::after{border-color:#282f2f}html.theme--documenter-dark .select.is-dark select,html.theme--documenter-dark .content kbd.select select{border-color:#282f2f}html.theme--documenter-dark .select.is-dark select:hover,html.theme--documenter-dark .content kbd.select select:hover,html.theme--documenter-dark .select.is-dark select.is-hovered,html.theme--documenter-dark .content kbd.select select.is-hovered{border-color:#1d2122}html.theme--documenter-dark .select.is-dark select:focus,html.theme--documenter-dark .content kbd.select select:focus,html.theme--documenter-dark .select.is-dark select.is-focused,html.theme--documenter-dark .content kbd.select select.is-focused,html.theme--documenter-dark .select.is-dark select:active,html.theme--documenter-dark .content kbd.select select:active,html.theme--documenter-dark .select.is-dark select.is-active,html.theme--documenter-dark .content kbd.select select.is-active{box-shadow:0 0 0 0.125em rgba(40,47,47,0.25)}html.theme--documenter-dark .select.is-primary:not(:hover)::after,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink:not(:hover)::after{border-color:#375a7f}html.theme--documenter-dark .select.is-primary select,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select{border-color:#375a7f}html.theme--documenter-dark .select.is-primary select:hover,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select:hover,html.theme--documenter-dark .select.is-primary select.is-hovered,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select.is-hovered{border-color:#2f4d6d}html.theme--documenter-dark .select.is-primary select:focus,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select:focus,html.theme--documenter-dark .select.is-primary select.is-focused,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select.is-focused,html.theme--documenter-dark .select.is-primary select:active,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select:active,html.theme--documenter-dark .select.is-primary select.is-active,html.theme--documenter-dark .docstring>section>a.select.docs-sourcelink select.is-active{box-shadow:0 0 0 0.125em rgba(55,90,127,0.25)}html.theme--documenter-dark .select.is-link:not(:hover)::after{border-color:#1abc9c}html.theme--documenter-dark .select.is-link select{border-color:#1abc9c}html.theme--documenter-dark .select.is-link select:hover,html.theme--documenter-dark .select.is-link select.is-hovered{border-color:#17a689}html.theme--documenter-dark .select.is-link select:focus,html.theme--documenter-dark .select.is-link select.is-focused,html.theme--documenter-dark .select.is-link select:active,html.theme--documenter-dark .select.is-link select.is-active{box-shadow:0 0 0 0.125em rgba(26,188,156,0.25)}html.theme--documenter-dark .select.is-info:not(:hover)::after{border-color:#024c7d}html.theme--documenter-dark .select.is-info select{border-color:#024c7d}html.theme--documenter-dark .select.is-info select:hover,html.theme--documenter-dark .select.is-info select.is-hovered{border-color:#023d64}html.theme--documenter-dark .select.is-info select:focus,html.theme--documenter-dark .select.is-info select.is-focused,html.theme--documenter-dark .select.is-info select:active,html.theme--documenter-dark .select.is-info select.is-active{box-shadow:0 0 0 0.125em rgba(2,76,125,0.25)}html.theme--documenter-dark .select.is-success:not(:hover)::after{border-color:#008438}html.theme--documenter-dark .select.is-success select{border-color:#008438}html.theme--documenter-dark .select.is-success select:hover,html.theme--documenter-dark .select.is-success select.is-hovered{border-color:#006b2d}html.theme--documenter-dark .select.is-success select:focus,html.theme--documenter-dark .select.is-success select.is-focused,html.theme--documenter-dark .select.is-success select:active,html.theme--documenter-dark .select.is-success select.is-active{box-shadow:0 0 0 0.125em rgba(0,132,56,0.25)}html.theme--documenter-dark .select.is-warning:not(:hover)::after{border-color:#ad8100}html.theme--documenter-dark .select.is-warning select{border-color:#ad8100}html.theme--documenter-dark .select.is-warning select:hover,html.theme--documenter-dark .select.is-warning select.is-hovered{border-color:#946e00}html.theme--documenter-dark .select.is-warning select:focus,html.theme--documenter-dark .select.is-warning select.is-focused,html.theme--documenter-dark .select.is-warning select:active,html.theme--documenter-dark .select.is-warning select.is-active{box-shadow:0 0 0 0.125em rgba(173,129,0,0.25)}html.theme--documenter-dark .select.is-danger:not(:hover)::after{border-color:#9e1b0d}html.theme--documenter-dark .select.is-danger select{border-color:#9e1b0d}html.theme--documenter-dark .select.is-danger select:hover,html.theme--documenter-dark .select.is-danger select.is-hovered{border-color:#86170b}html.theme--documenter-dark .select.is-danger select:focus,html.theme--documenter-dark .select.is-danger select.is-focused,html.theme--documenter-dark .select.is-danger select:active,html.theme--documenter-dark .select.is-danger select.is-active{box-shadow:0 0 0 0.125em rgba(158,27,13,0.25)}html.theme--documenter-dark .select.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.select{border-radius:3px;font-size:.75rem}html.theme--documenter-dark .select.is-medium{font-size:1.25rem}html.theme--documenter-dark .select.is-large{font-size:1.5rem}html.theme--documenter-dark .select.is-disabled::after{border-color:#fff !important;opacity:0.5}html.theme--documenter-dark .select.is-fullwidth{width:100%}html.theme--documenter-dark .select.is-fullwidth select{width:100%}html.theme--documenter-dark .select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:0.625em;transform:none}html.theme--documenter-dark .select.is-loading.is-small:after,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}html.theme--documenter-dark .select.is-loading.is-medium:after{font-size:1.25rem}html.theme--documenter-dark .select.is-loading.is-large:after{font-size:1.5rem}html.theme--documenter-dark .file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}html.theme--documenter-dark .file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .file.is-white:hover .file-cta,html.theme--documenter-dark .file.is-white.is-hovered .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .file.is-white:focus .file-cta,html.theme--documenter-dark .file.is-white.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,255,255,0.25);color:#0a0a0a}html.theme--documenter-dark .file.is-white:active .file-cta,html.theme--documenter-dark .file.is-white.is-active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}html.theme--documenter-dark .file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-black:hover .file-cta,html.theme--documenter-dark .file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-black:focus .file-cta,html.theme--documenter-dark .file.is-black.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(10,10,10,0.25);color:#fff}html.theme--documenter-dark .file.is-black:active .file-cta,html.theme--documenter-dark .file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-light .file-cta{background-color:#ecf0f1;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .file.is-light:hover .file-cta,html.theme--documenter-dark .file.is-light.is-hovered .file-cta{background-color:#e5eaec;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .file.is-light:focus .file-cta,html.theme--documenter-dark .file.is-light.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(236,240,241,0.25);color:rgba(0,0,0,0.7)}html.theme--documenter-dark .file.is-light:active .file-cta,html.theme--documenter-dark .file.is-light.is-active .file-cta{background-color:#dde4e6;border-color:transparent;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .file.is-dark .file-cta,html.theme--documenter-dark .content kbd.file .file-cta{background-color:#282f2f;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-dark:hover .file-cta,html.theme--documenter-dark .content kbd.file:hover .file-cta,html.theme--documenter-dark .file.is-dark.is-hovered .file-cta,html.theme--documenter-dark .content kbd.file.is-hovered .file-cta{background-color:#232829;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-dark:focus .file-cta,html.theme--documenter-dark .content kbd.file:focus .file-cta,html.theme--documenter-dark .file.is-dark.is-focused .file-cta,html.theme--documenter-dark .content kbd.file.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(40,47,47,0.25);color:#fff}html.theme--documenter-dark .file.is-dark:active .file-cta,html.theme--documenter-dark .content kbd.file:active .file-cta,html.theme--documenter-dark .file.is-dark.is-active .file-cta,html.theme--documenter-dark .content kbd.file.is-active .file-cta{background-color:#1d2122;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-primary .file-cta,html.theme--documenter-dark .docstring>section>a.file.docs-sourcelink .file-cta{background-color:#375a7f;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-primary:hover .file-cta,html.theme--documenter-dark .docstring>section>a.file.docs-sourcelink:hover .file-cta,html.theme--documenter-dark .file.is-primary.is-hovered .file-cta,html.theme--documenter-dark .docstring>section>a.file.is-hovered.docs-sourcelink .file-cta{background-color:#335476;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-primary:focus .file-cta,html.theme--documenter-dark .docstring>section>a.file.docs-sourcelink:focus .file-cta,html.theme--documenter-dark .file.is-primary.is-focused .file-cta,html.theme--documenter-dark .docstring>section>a.file.is-focused.docs-sourcelink .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(55,90,127,0.25);color:#fff}html.theme--documenter-dark .file.is-primary:active .file-cta,html.theme--documenter-dark .docstring>section>a.file.docs-sourcelink:active .file-cta,html.theme--documenter-dark .file.is-primary.is-active .file-cta,html.theme--documenter-dark .docstring>section>a.file.is-active.docs-sourcelink .file-cta{background-color:#2f4d6d;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-link .file-cta{background-color:#1abc9c;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-link:hover .file-cta,html.theme--documenter-dark .file.is-link.is-hovered .file-cta{background-color:#18b193;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-link:focus .file-cta,html.theme--documenter-dark .file.is-link.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(26,188,156,0.25);color:#fff}html.theme--documenter-dark .file.is-link:active .file-cta,html.theme--documenter-dark .file.is-link.is-active .file-cta{background-color:#17a689;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-info .file-cta{background-color:#024c7d;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-info:hover .file-cta,html.theme--documenter-dark .file.is-info.is-hovered .file-cta{background-color:#024470;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-info:focus .file-cta,html.theme--documenter-dark .file.is-info.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(2,76,125,0.25);color:#fff}html.theme--documenter-dark .file.is-info:active .file-cta,html.theme--documenter-dark .file.is-info.is-active .file-cta{background-color:#023d64;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-success .file-cta{background-color:#008438;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-success:hover .file-cta,html.theme--documenter-dark .file.is-success.is-hovered .file-cta{background-color:#073;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-success:focus .file-cta,html.theme--documenter-dark .file.is-success.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(0,132,56,0.25);color:#fff}html.theme--documenter-dark .file.is-success:active .file-cta,html.theme--documenter-dark .file.is-success.is-active .file-cta{background-color:#006b2d;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-warning .file-cta{background-color:#ad8100;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-warning:hover .file-cta,html.theme--documenter-dark .file.is-warning.is-hovered .file-cta{background-color:#a07700;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-warning:focus .file-cta,html.theme--documenter-dark .file.is-warning.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(173,129,0,0.25);color:#fff}html.theme--documenter-dark .file.is-warning:active .file-cta,html.theme--documenter-dark .file.is-warning.is-active .file-cta{background-color:#946e00;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-danger .file-cta{background-color:#9e1b0d;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-danger:hover .file-cta,html.theme--documenter-dark .file.is-danger.is-hovered .file-cta{background-color:#92190c;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-danger:focus .file-cta,html.theme--documenter-dark .file.is-danger.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(158,27,13,0.25);color:#fff}html.theme--documenter-dark .file.is-danger:active .file-cta,html.theme--documenter-dark .file.is-danger.is-active .file-cta{background-color:#86170b;border-color:transparent;color:#fff}html.theme--documenter-dark .file.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.file{font-size:.75rem}html.theme--documenter-dark .file.is-normal{font-size:1rem}html.theme--documenter-dark .file.is-medium{font-size:1.25rem}html.theme--documenter-dark .file.is-medium .file-icon .fa{font-size:21px}html.theme--documenter-dark .file.is-large{font-size:1.5rem}html.theme--documenter-dark .file.is-large .file-icon .fa{font-size:28px}html.theme--documenter-dark .file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--documenter-dark .file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--documenter-dark .file.has-name.is-empty .file-cta{border-radius:.4em}html.theme--documenter-dark .file.has-name.is-empty .file-name{display:none}html.theme--documenter-dark .file.is-boxed .file-label{flex-direction:column}html.theme--documenter-dark .file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}html.theme--documenter-dark .file.is-boxed .file-name{border-width:0 1px 1px}html.theme--documenter-dark .file.is-boxed .file-icon{height:1.5em;width:1.5em}html.theme--documenter-dark .file.is-boxed .file-icon .fa{font-size:21px}html.theme--documenter-dark .file.is-boxed.is-small .file-icon .fa,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-boxed .file-icon .fa{font-size:14px}html.theme--documenter-dark .file.is-boxed.is-medium .file-icon .fa{font-size:28px}html.theme--documenter-dark .file.is-boxed.is-large .file-icon .fa{font-size:35px}html.theme--documenter-dark .file.is-boxed.has-name .file-cta{border-radius:.4em .4em 0 0}html.theme--documenter-dark .file.is-boxed.has-name .file-name{border-radius:0 0 .4em .4em;border-width:0 1px 1px}html.theme--documenter-dark .file.is-centered{justify-content:center}html.theme--documenter-dark .file.is-fullwidth .file-label{width:100%}html.theme--documenter-dark .file.is-fullwidth .file-name{flex-grow:1;max-width:none}html.theme--documenter-dark .file.is-right{justify-content:flex-end}html.theme--documenter-dark .file.is-right .file-cta{border-radius:0 .4em .4em 0}html.theme--documenter-dark .file.is-right .file-name{border-radius:.4em 0 0 .4em;border-width:1px 0 1px 1px;order:-1}html.theme--documenter-dark .file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}html.theme--documenter-dark .file-label:hover .file-cta{background-color:#232829;color:#f2f2f2}html.theme--documenter-dark .file-label:hover .file-name{border-color:#596668}html.theme--documenter-dark .file-label:active .file-cta{background-color:#1d2122;color:#f2f2f2}html.theme--documenter-dark .file-label:active .file-name{border-color:#535f61}html.theme--documenter-dark .file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}html.theme--documenter-dark .file-cta,html.theme--documenter-dark .file-name{border-color:#5e6d6f;border-radius:.4em;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}html.theme--documenter-dark .file-cta{background-color:#282f2f;color:#fff}html.theme--documenter-dark .file-name{border-color:#5e6d6f;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}html.theme--documenter-dark .file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}html.theme--documenter-dark .file-icon .fa{font-size:14px}html.theme--documenter-dark .label{color:#f2f2f2;display:block;font-size:1rem;font-weight:700}html.theme--documenter-dark .label:not(:last-child){margin-bottom:0.5em}html.theme--documenter-dark .label.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.label{font-size:.75rem}html.theme--documenter-dark .label.is-medium{font-size:1.25rem}html.theme--documenter-dark .label.is-large{font-size:1.5rem}html.theme--documenter-dark .help{display:block;font-size:.75rem;margin-top:0.25rem}html.theme--documenter-dark .help.is-white{color:#fff}html.theme--documenter-dark .help.is-black{color:#0a0a0a}html.theme--documenter-dark .help.is-light{color:#ecf0f1}html.theme--documenter-dark .help.is-dark,html.theme--documenter-dark .content kbd.help{color:#282f2f}html.theme--documenter-dark .help.is-primary,html.theme--documenter-dark .docstring>section>a.help.docs-sourcelink{color:#375a7f}html.theme--documenter-dark .help.is-link{color:#1abc9c}html.theme--documenter-dark .help.is-info{color:#024c7d}html.theme--documenter-dark .help.is-success{color:#008438}html.theme--documenter-dark .help.is-warning{color:#ad8100}html.theme--documenter-dark .help.is-danger{color:#9e1b0d}html.theme--documenter-dark .field:not(:last-child){margin-bottom:0.75rem}html.theme--documenter-dark .field.has-addons{display:flex;justify-content:flex-start}html.theme--documenter-dark .field.has-addons .control:not(:last-child){margin-right:-1px}html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .button,html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .input,html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search>input,html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .button,html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .input,html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search>input,html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .button,html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .input,html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search>input,html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .button.is-hovered:not([disabled]),html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .input.is-hovered:not([disabled]),html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-hovered:not([disabled]),html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-hovered:not([disabled]),html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .select select.is-hovered:not([disabled]){z-index:2}html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control .button.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control .button.is-active:not([disabled]),html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control .input.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]),html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control .input.is-active:not([disabled]),html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]),html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]),html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):focus,html.theme--documenter-dark .field.has-addons .control .select select.is-focused:not([disabled]),html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):active,html.theme--documenter-dark .field.has-addons .control .select select.is-active:not([disabled]){z-index:3}html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):focus:hover,html.theme--documenter-dark .field.has-addons .control .button.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control .button.is-active:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):focus:hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus:hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus:hover,html.theme--documenter-dark .field.has-addons .control .input.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]):hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active:hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control .input.is-active:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]):hover,html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):focus:hover,html.theme--documenter-dark .field.has-addons .control .select select.is-focused:not([disabled]):hover,html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):active:hover,html.theme--documenter-dark .field.has-addons .control .select select.is-active:not([disabled]):hover{z-index:4}html.theme--documenter-dark .field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .field.has-addons.has-addons-centered{justify-content:center}html.theme--documenter-dark .field.has-addons.has-addons-right{justify-content:flex-end}html.theme--documenter-dark .field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}html.theme--documenter-dark .field.is-grouped{display:flex;justify-content:flex-start}html.theme--documenter-dark .field.is-grouped>.control{flex-shrink:0}html.theme--documenter-dark .field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--documenter-dark .field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .field.is-grouped.is-grouped-centered{justify-content:center}html.theme--documenter-dark .field.is-grouped.is-grouped-right{justify-content:flex-end}html.theme--documenter-dark .field.is-grouped.is-grouped-multiline{flex-wrap:wrap}html.theme--documenter-dark .field.is-grouped.is-grouped-multiline>.control:last-child,html.theme--documenter-dark .field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:0.75rem}html.theme--documenter-dark .field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}html.theme--documenter-dark .field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--documenter-dark .field.is-horizontal{display:flex}}html.theme--documenter-dark .field-label .label{font-size:inherit}@media screen and (max-width: 768px){html.theme--documenter-dark .field-label{margin-bottom:0.5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}html.theme--documenter-dark .field-label.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.field-label{font-size:.75rem;padding-top:0.375em}html.theme--documenter-dark .field-label.is-normal{padding-top:0.375em}html.theme--documenter-dark .field-label.is-medium{font-size:1.25rem;padding-top:0.375em}html.theme--documenter-dark .field-label.is-large{font-size:1.5rem;padding-top:0.375em}}html.theme--documenter-dark .field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px),print{html.theme--documenter-dark .field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}html.theme--documenter-dark .field-body .field{margin-bottom:0}html.theme--documenter-dark .field-body>.field{flex-shrink:1}html.theme--documenter-dark .field-body>.field:not(.is-narrow){flex-grow:1}html.theme--documenter-dark .field-body>.field:not(:last-child){margin-right:.75rem}}html.theme--documenter-dark .control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}html.theme--documenter-dark .control.has-icons-left .input:focus~.icon,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input:focus~.icon,html.theme--documenter-dark .control.has-icons-left .select:focus~.icon,html.theme--documenter-dark .control.has-icons-right .input:focus~.icon,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input:focus~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input:focus~.icon,html.theme--documenter-dark .control.has-icons-right .select:focus~.icon{color:#282f2f}html.theme--documenter-dark .control.has-icons-left .input.is-small~.icon,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input~.icon,html.theme--documenter-dark .control.has-icons-left .select.is-small~.icon,html.theme--documenter-dark .control.has-icons-right .input.is-small~.icon,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input~.icon,html.theme--documenter-dark .control.has-icons-right .select.is-small~.icon{font-size:.75rem}html.theme--documenter-dark .control.has-icons-left .input.is-medium~.icon,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-medium~.icon,html.theme--documenter-dark .control.has-icons-left .select.is-medium~.icon,html.theme--documenter-dark .control.has-icons-right .input.is-medium~.icon,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-medium~.icon,html.theme--documenter-dark .control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}html.theme--documenter-dark .control.has-icons-left .input.is-large~.icon,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-large~.icon,html.theme--documenter-dark .control.has-icons-left .select.is-large~.icon,html.theme--documenter-dark .control.has-icons-right .input.is-large~.icon,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-large~.icon,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-large~.icon,html.theme--documenter-dark .control.has-icons-right .select.is-large~.icon{font-size:1.5rem}html.theme--documenter-dark .control.has-icons-left .icon,html.theme--documenter-dark .control.has-icons-right .icon{color:#5e6d6f;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}html.theme--documenter-dark .control.has-icons-left .input,html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search>input,html.theme--documenter-dark .control.has-icons-left .select select{padding-left:2.5em}html.theme--documenter-dark .control.has-icons-left .icon.is-left{left:0}html.theme--documenter-dark .control.has-icons-right .input,html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search>input,html.theme--documenter-dark .control.has-icons-right .select select{padding-right:2.5em}html.theme--documenter-dark .control.has-icons-right .icon.is-right{right:0}html.theme--documenter-dark .control.is-loading::after{position:absolute !important;right:.625em;top:0.625em;z-index:4}html.theme--documenter-dark .control.is-loading.is-small:after,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}html.theme--documenter-dark .control.is-loading.is-medium:after{font-size:1.25rem}html.theme--documenter-dark .control.is-loading.is-large:after{font-size:1.5rem}html.theme--documenter-dark .breadcrumb{font-size:1rem;white-space:nowrap}html.theme--documenter-dark .breadcrumb a{align-items:center;color:#1abc9c;display:flex;justify-content:center;padding:0 .75em}html.theme--documenter-dark .breadcrumb a:hover{color:#1dd2af}html.theme--documenter-dark .breadcrumb li{align-items:center;display:flex}html.theme--documenter-dark .breadcrumb li:first-child a{padding-left:0}html.theme--documenter-dark .breadcrumb li.is-active a{color:#f2f2f2;cursor:default;pointer-events:none}html.theme--documenter-dark .breadcrumb li+li::before{color:#8c9b9d;content:"\0002f"}html.theme--documenter-dark .breadcrumb ul,html.theme--documenter-dark .breadcrumb ol{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}html.theme--documenter-dark .breadcrumb .icon:first-child{margin-right:.5em}html.theme--documenter-dark .breadcrumb .icon:last-child{margin-left:.5em}html.theme--documenter-dark .breadcrumb.is-centered ol,html.theme--documenter-dark .breadcrumb.is-centered ul{justify-content:center}html.theme--documenter-dark .breadcrumb.is-right ol,html.theme--documenter-dark .breadcrumb.is-right ul{justify-content:flex-end}html.theme--documenter-dark .breadcrumb.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.breadcrumb{font-size:.75rem}html.theme--documenter-dark .breadcrumb.is-medium{font-size:1.25rem}html.theme--documenter-dark .breadcrumb.is-large{font-size:1.5rem}html.theme--documenter-dark .breadcrumb.has-arrow-separator li+li::before{content:"\02192"}html.theme--documenter-dark .breadcrumb.has-bullet-separator li+li::before{content:"\02022"}html.theme--documenter-dark .breadcrumb.has-dot-separator li+li::before{content:"\000b7"}html.theme--documenter-dark .breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}html.theme--documenter-dark .card{background-color:#fff;border-radius:.25rem;box-shadow:#171717;color:#fff;max-width:100%;position:relative}html.theme--documenter-dark .card-footer:first-child,html.theme--documenter-dark .card-content:first-child,html.theme--documenter-dark .card-header:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}html.theme--documenter-dark .card-footer:last-child,html.theme--documenter-dark .card-content:last-child,html.theme--documenter-dark .card-header:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}html.theme--documenter-dark .card-header{background-color:rgba(0,0,0,0);align-items:stretch;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);display:flex}html.theme--documenter-dark .card-header-title{align-items:center;color:#f2f2f2;display:flex;flex-grow:1;font-weight:700;padding:0.75rem 1rem}html.theme--documenter-dark .card-header-title.is-centered{justify-content:center}html.theme--documenter-dark .card-header-icon{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0;align-items:center;cursor:pointer;display:flex;justify-content:center;padding:0.75rem 1rem}html.theme--documenter-dark .card-image{display:block;position:relative}html.theme--documenter-dark .card-image:first-child img{border-top-left-radius:.25rem;border-top-right-radius:.25rem}html.theme--documenter-dark .card-image:last-child img{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}html.theme--documenter-dark .card-content{background-color:rgba(0,0,0,0);padding:1.5rem}html.theme--documenter-dark .card-footer{background-color:rgba(0,0,0,0);border-top:1px solid #ededed;align-items:stretch;display:flex}html.theme--documenter-dark .card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}html.theme--documenter-dark .card-footer-item:not(:last-child){border-right:1px solid #ededed}html.theme--documenter-dark .card .media:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .dropdown{display:inline-flex;position:relative;vertical-align:top}html.theme--documenter-dark .dropdown.is-active .dropdown-menu,html.theme--documenter-dark .dropdown.is-hoverable:hover .dropdown-menu{display:block}html.theme--documenter-dark .dropdown.is-right .dropdown-menu{left:auto;right:0}html.theme--documenter-dark .dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}html.theme--documenter-dark .dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}html.theme--documenter-dark .dropdown-content{background-color:#282f2f;border-radius:.4em;box-shadow:#171717;padding-bottom:.5rem;padding-top:.5rem}html.theme--documenter-dark .dropdown-item{color:#fff;display:block;font-size:0.875rem;line-height:1.5;padding:0.375rem 1rem;position:relative}html.theme--documenter-dark a.dropdown-item,html.theme--documenter-dark button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}html.theme--documenter-dark a.dropdown-item:hover,html.theme--documenter-dark button.dropdown-item:hover{background-color:#282f2f;color:#0a0a0a}html.theme--documenter-dark a.dropdown-item.is-active,html.theme--documenter-dark button.dropdown-item.is-active{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:0.5rem 0}html.theme--documenter-dark .level{align-items:center;justify-content:space-between}html.theme--documenter-dark .level code{border-radius:.4em}html.theme--documenter-dark .level img{display:inline-block;vertical-align:top}html.theme--documenter-dark .level.is-mobile{display:flex}html.theme--documenter-dark .level.is-mobile .level-left,html.theme--documenter-dark .level.is-mobile .level-right{display:flex}html.theme--documenter-dark .level.is-mobile .level-left+.level-right{margin-top:0}html.theme--documenter-dark .level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}html.theme--documenter-dark .level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width: 769px),print{html.theme--documenter-dark .level{display:flex}html.theme--documenter-dark .level>.level-item:not(.is-narrow){flex-grow:1}}html.theme--documenter-dark .level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}html.theme--documenter-dark .level-item .title,html.theme--documenter-dark .level-item .subtitle{margin-bottom:0}@media screen and (max-width: 768px){html.theme--documenter-dark .level-item:not(:last-child){margin-bottom:.75rem}}html.theme--documenter-dark .level-left,html.theme--documenter-dark .level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--documenter-dark .level-left .level-item.is-flexible,html.theme--documenter-dark .level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width: 769px),print{html.theme--documenter-dark .level-left .level-item:not(:last-child),html.theme--documenter-dark .level-right .level-item:not(:last-child){margin-right:.75rem}}html.theme--documenter-dark .level-left{align-items:center;justify-content:flex-start}@media screen and (max-width: 768px){html.theme--documenter-dark .level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .level-left{display:flex}}html.theme--documenter-dark .level-right{align-items:center;justify-content:flex-end}@media screen and (min-width: 769px),print{html.theme--documenter-dark .level-right{display:flex}}html.theme--documenter-dark .media{align-items:flex-start;display:flex;text-align:inherit}html.theme--documenter-dark .media .content:not(:last-child){margin-bottom:.75rem}html.theme--documenter-dark .media .media{border-top:1px solid rgba(94,109,111,0.5);display:flex;padding-top:.75rem}html.theme--documenter-dark .media .media .content:not(:last-child),html.theme--documenter-dark .media .media .control:not(:last-child){margin-bottom:.5rem}html.theme--documenter-dark .media .media .media{padding-top:.5rem}html.theme--documenter-dark .media .media .media+.media{margin-top:.5rem}html.theme--documenter-dark .media+.media{border-top:1px solid rgba(94,109,111,0.5);margin-top:1rem;padding-top:1rem}html.theme--documenter-dark .media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}html.theme--documenter-dark .media-left,html.theme--documenter-dark .media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}html.theme--documenter-dark .media-left{margin-right:1rem}html.theme--documenter-dark .media-right{margin-left:1rem}html.theme--documenter-dark .media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width: 768px){html.theme--documenter-dark .media-content{overflow-x:auto}}html.theme--documenter-dark .menu{font-size:1rem}html.theme--documenter-dark .menu.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.menu{font-size:.75rem}html.theme--documenter-dark .menu.is-medium{font-size:1.25rem}html.theme--documenter-dark .menu.is-large{font-size:1.5rem}html.theme--documenter-dark .menu-list{line-height:1.25}html.theme--documenter-dark .menu-list a{border-radius:3px;color:#fff;display:block;padding:0.5em 0.75em}html.theme--documenter-dark .menu-list a:hover{background-color:#282f2f;color:#f2f2f2}html.theme--documenter-dark .menu-list a.is-active{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .menu-list li ul{border-left:1px solid #5e6d6f;margin:.75em;padding-left:.75em}html.theme--documenter-dark .menu-label{color:#fff;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}html.theme--documenter-dark .menu-label:not(:first-child){margin-top:1em}html.theme--documenter-dark .menu-label:not(:last-child){margin-bottom:1em}html.theme--documenter-dark .message{background-color:#282f2f;border-radius:.4em;font-size:1rem}html.theme--documenter-dark .message strong{color:currentColor}html.theme--documenter-dark .message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}html.theme--documenter-dark .message.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.message{font-size:.75rem}html.theme--documenter-dark .message.is-medium{font-size:1.25rem}html.theme--documenter-dark .message.is-large{font-size:1.5rem}html.theme--documenter-dark .message.is-white{background-color:#fff}html.theme--documenter-dark .message.is-white .message-header{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .message.is-white .message-body{border-color:#fff}html.theme--documenter-dark .message.is-black{background-color:#fafafa}html.theme--documenter-dark .message.is-black .message-header{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .message.is-black .message-body{border-color:#0a0a0a}html.theme--documenter-dark .message.is-light{background-color:#f9fafb}html.theme--documenter-dark .message.is-light .message-header{background-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .message.is-light .message-body{border-color:#ecf0f1}html.theme--documenter-dark .message.is-dark,html.theme--documenter-dark .content kbd.message{background-color:#f9fafa}html.theme--documenter-dark .message.is-dark .message-header,html.theme--documenter-dark .content kbd.message .message-header{background-color:#282f2f;color:#fff}html.theme--documenter-dark .message.is-dark .message-body,html.theme--documenter-dark .content kbd.message .message-body{border-color:#282f2f}html.theme--documenter-dark .message.is-primary,html.theme--documenter-dark .docstring>section>a.message.docs-sourcelink{background-color:#f1f5f9}html.theme--documenter-dark .message.is-primary .message-header,html.theme--documenter-dark .docstring>section>a.message.docs-sourcelink .message-header{background-color:#375a7f;color:#fff}html.theme--documenter-dark .message.is-primary .message-body,html.theme--documenter-dark .docstring>section>a.message.docs-sourcelink .message-body{border-color:#375a7f;color:#4d7eb2}html.theme--documenter-dark .message.is-link{background-color:#edfdf9}html.theme--documenter-dark .message.is-link .message-header{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .message.is-link .message-body{border-color:#1abc9c;color:#15987e}html.theme--documenter-dark .message.is-info{background-color:#ebf7ff}html.theme--documenter-dark .message.is-info .message-header{background-color:#024c7d;color:#fff}html.theme--documenter-dark .message.is-info .message-body{border-color:#024c7d;color:#0e9dfb}html.theme--documenter-dark .message.is-success{background-color:#ebfff3}html.theme--documenter-dark .message.is-success .message-header{background-color:#008438;color:#fff}html.theme--documenter-dark .message.is-success .message-body{border-color:#008438;color:#00eb64}html.theme--documenter-dark .message.is-warning{background-color:#fffaeb}html.theme--documenter-dark .message.is-warning .message-header{background-color:#ad8100;color:#fff}html.theme--documenter-dark .message.is-warning .message-body{border-color:#ad8100;color:#d19c00}html.theme--documenter-dark .message.is-danger{background-color:#fdeeec}html.theme--documenter-dark .message.is-danger .message-header{background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .message.is-danger .message-body{border-color:#9e1b0d;color:#ec311d}html.theme--documenter-dark .message-header{align-items:center;background-color:#fff;border-radius:.4em .4em 0 0;color:rgba(0,0,0,0.7);display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.75em 1em;position:relative}html.theme--documenter-dark .message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}html.theme--documenter-dark .message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}html.theme--documenter-dark .message-body{border-color:#5e6d6f;border-radius:.4em;border-style:solid;border-width:0 0 0 4px;color:#fff;padding:1.25em 1.5em}html.theme--documenter-dark .message-body code,html.theme--documenter-dark .message-body pre{background-color:#fff}html.theme--documenter-dark .message-body pre code{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}html.theme--documenter-dark .modal.is-active{display:flex}html.theme--documenter-dark .modal-background{background-color:rgba(10,10,10,0.86)}html.theme--documenter-dark .modal-content,html.theme--documenter-dark .modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px){html.theme--documenter-dark .modal-content,html.theme--documenter-dark .modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}html.theme--documenter-dark .modal-close{background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}html.theme--documenter-dark .modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}html.theme--documenter-dark .modal-card-head,html.theme--documenter-dark .modal-card-foot{align-items:center;background-color:#282f2f;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}html.theme--documenter-dark .modal-card-head{border-bottom:1px solid #5e6d6f;border-top-left-radius:8px;border-top-right-radius:8px}html.theme--documenter-dark .modal-card-title{color:#f2f2f2;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}html.theme--documenter-dark .modal-card-foot{border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid #5e6d6f}html.theme--documenter-dark .modal-card-foot .button:not(:last-child){margin-right:.5em}html.theme--documenter-dark .modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}html.theme--documenter-dark .navbar{background-color:#375a7f;min-height:4rem;position:relative;z-index:30}html.theme--documenter-dark .navbar.is-white{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-white .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-white .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-white .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-white .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-white .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-white .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-white .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-white .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-white .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link::after{border-color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}html.theme--documenter-dark .navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}html.theme--documenter-dark .navbar.is-black{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-black .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-black .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-black .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-black .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-black .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-black .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-black .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-black .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-black .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}html.theme--documenter-dark .navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}html.theme--documenter-dark .navbar.is-light{background-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-light .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-light .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#dde4e6;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-light .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-light .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-light .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-light .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-light .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-light .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-light .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link.is-active{background-color:#dde4e6;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#dde4e6;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#ecf0f1;color:rgba(0,0,0,0.7)}}html.theme--documenter-dark .navbar.is-dark,html.theme--documenter-dark .content kbd.navbar{background-color:#282f2f;color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-brand>.navbar-item,html.theme--documenter-dark .content kbd.navbar .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .content kbd.navbar .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-dark .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .content kbd.navbar .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-dark .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link:focus,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link:hover,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link.is-active{background-color:#1d2122;color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link::after,html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-burger,html.theme--documenter-dark .content kbd.navbar .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-dark .navbar-start>.navbar-item,html.theme--documenter-dark .content kbd.navbar .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-dark .navbar-end>.navbar-item,html.theme--documenter-dark .content kbd.navbar .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .content kbd.navbar .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-dark .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .content kbd.navbar .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-dark .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link:focus,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link:hover,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-dark .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .content kbd.navbar .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-dark .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .content kbd.navbar .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-dark .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link:focus,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link:hover,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link.is-active{background-color:#1d2122;color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link::after,html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link::after,html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link{background-color:#1d2122;color:#fff}html.theme--documenter-dark .navbar.is-dark .navbar-dropdown a.navbar-item.is-active,html.theme--documenter-dark .content kbd.navbar .navbar-dropdown a.navbar-item.is-active{background-color:#282f2f;color:#fff}}html.theme--documenter-dark .navbar.is-primary,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink{background-color:#375a7f;color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-brand>.navbar-item,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-primary .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-primary .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active{background-color:#2f4d6d;color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link::after,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-burger,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-primary .navbar-start>.navbar-item,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-primary .navbar-end>.navbar-item,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-primary .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-primary .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-primary .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-primary .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-primary .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link:focus,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link:hover,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active{background-color:#2f4d6d;color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link::after,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link::after,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link{background-color:#2f4d6d;color:#fff}html.theme--documenter-dark .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#375a7f;color:#fff}}html.theme--documenter-dark .navbar.is-link{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-link .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-link .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#17a689;color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-link .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-link .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-link .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-link .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-link .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-link .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-link .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link.is-active{background-color:#17a689;color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#17a689;color:#fff}html.theme--documenter-dark .navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#1abc9c;color:#fff}}html.theme--documenter-dark .navbar.is-info{background-color:#024c7d;color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-info .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-info .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#023d64;color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-info .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-info .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-info .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-info .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-info .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-info .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-info .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link.is-active{background-color:#023d64;color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#023d64;color:#fff}html.theme--documenter-dark .navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#024c7d;color:#fff}}html.theme--documenter-dark .navbar.is-success{background-color:#008438;color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-success .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-success .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#006b2d;color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-success .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-success .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-success .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-success .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-success .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-success .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-success .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link.is-active{background-color:#006b2d;color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#006b2d;color:#fff}html.theme--documenter-dark .navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#008438;color:#fff}}html.theme--documenter-dark .navbar.is-warning{background-color:#ad8100;color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-warning .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-warning .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#946e00;color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-warning .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-warning .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-warning .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-warning .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-warning .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-warning .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-warning .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#946e00;color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#946e00;color:#fff}html.theme--documenter-dark .navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#ad8100;color:#fff}}html.theme--documenter-dark .navbar.is-danger{background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-brand>.navbar-item,html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-brand>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-danger .navbar-brand>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-danger .navbar-brand>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link:focus,html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link:hover,html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#86170b;color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar.is-danger .navbar-start>.navbar-item,html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link,html.theme--documenter-dark .navbar.is-danger .navbar-end>.navbar-item,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link{color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-start>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-danger .navbar-start>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-danger .navbar-start>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link:focus,html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link:hover,html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link.is-active,html.theme--documenter-dark .navbar.is-danger .navbar-end>a.navbar-item:focus,html.theme--documenter-dark .navbar.is-danger .navbar-end>a.navbar-item:hover,html.theme--documenter-dark .navbar.is-danger .navbar-end>a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link:focus,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link:hover,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#86170b;color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link::after,html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link::after{border-color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#86170b;color:#fff}html.theme--documenter-dark .navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#9e1b0d;color:#fff}}html.theme--documenter-dark .navbar>.container{align-items:stretch;display:flex;min-height:4rem;width:100%}html.theme--documenter-dark .navbar.has-shadow{box-shadow:0 2px 0 0 #282f2f}html.theme--documenter-dark .navbar.is-fixed-bottom,html.theme--documenter-dark .navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}html.theme--documenter-dark .navbar.is-fixed-bottom{bottom:0}html.theme--documenter-dark .navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #282f2f}html.theme--documenter-dark .navbar.is-fixed-top{top:0}html.theme--documenter-dark html.has-navbar-fixed-top,html.theme--documenter-dark body.has-navbar-fixed-top{padding-top:4rem}html.theme--documenter-dark html.has-navbar-fixed-bottom,html.theme--documenter-dark body.has-navbar-fixed-bottom{padding-bottom:4rem}html.theme--documenter-dark .navbar-brand,html.theme--documenter-dark .navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:4rem}html.theme--documenter-dark .navbar-brand a.navbar-item:focus,html.theme--documenter-dark .navbar-brand a.navbar-item:hover{background-color:transparent}html.theme--documenter-dark .navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}html.theme--documenter-dark .navbar-burger{color:#fff;-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;display:block;height:4rem;position:relative;width:4rem;margin-left:auto}html.theme--documenter-dark .navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color, opacity, transform;transition-timing-function:ease-out;width:16px}html.theme--documenter-dark .navbar-burger span:nth-child(1){top:calc(50% - 6px)}html.theme--documenter-dark .navbar-burger span:nth-child(2){top:calc(50% - 1px)}html.theme--documenter-dark .navbar-burger span:nth-child(3){top:calc(50% + 4px)}html.theme--documenter-dark .navbar-burger:hover{background-color:rgba(0,0,0,0.05)}html.theme--documenter-dark .navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}html.theme--documenter-dark .navbar-burger.is-active span:nth-child(2){opacity:0}html.theme--documenter-dark .navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}html.theme--documenter-dark .navbar-menu{display:none}html.theme--documenter-dark .navbar-item,html.theme--documenter-dark .navbar-link{color:#fff;display:block;line-height:1.5;padding:0.5rem 0.75rem;position:relative}html.theme--documenter-dark .navbar-item .icon:only-child,html.theme--documenter-dark .navbar-link .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}html.theme--documenter-dark a.navbar-item,html.theme--documenter-dark .navbar-link{cursor:pointer}html.theme--documenter-dark a.navbar-item:focus,html.theme--documenter-dark a.navbar-item:focus-within,html.theme--documenter-dark a.navbar-item:hover,html.theme--documenter-dark a.navbar-item.is-active,html.theme--documenter-dark .navbar-link:focus,html.theme--documenter-dark .navbar-link:focus-within,html.theme--documenter-dark .navbar-link:hover,html.theme--documenter-dark .navbar-link.is-active{background-color:rgba(0,0,0,0);color:#1abc9c}html.theme--documenter-dark .navbar-item{flex-grow:0;flex-shrink:0}html.theme--documenter-dark .navbar-item img{max-height:1.75rem}html.theme--documenter-dark .navbar-item.has-dropdown{padding:0}html.theme--documenter-dark .navbar-item.is-expanded{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .navbar-item.is-tab{border-bottom:1px solid transparent;min-height:4rem;padding-bottom:calc(0.5rem - 1px)}html.theme--documenter-dark .navbar-item.is-tab:focus,html.theme--documenter-dark .navbar-item.is-tab:hover{background-color:rgba(0,0,0,0);border-bottom-color:#1abc9c}html.theme--documenter-dark .navbar-item.is-tab.is-active{background-color:rgba(0,0,0,0);border-bottom-color:#1abc9c;border-bottom-style:solid;border-bottom-width:3px;color:#1abc9c;padding-bottom:calc(0.5rem - 3px)}html.theme--documenter-dark .navbar-content{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .navbar-link:not(.is-arrowless){padding-right:2.5em}html.theme--documenter-dark .navbar-link:not(.is-arrowless)::after{border-color:#fff;margin-top:-0.375em;right:1.125em}html.theme--documenter-dark .navbar-dropdown{font-size:0.875rem;padding-bottom:0.5rem;padding-top:0.5rem}html.theme--documenter-dark .navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}html.theme--documenter-dark .navbar-divider{background-color:rgba(0,0,0,0.2);border:none;display:none;height:2px;margin:0.5rem 0}@media screen and (max-width: 1055px){html.theme--documenter-dark .navbar>.container{display:block}html.theme--documenter-dark .navbar-brand .navbar-item,html.theme--documenter-dark .navbar-tabs .navbar-item{align-items:center;display:flex}html.theme--documenter-dark .navbar-link::after{display:none}html.theme--documenter-dark .navbar-menu{background-color:#375a7f;box-shadow:0 8px 16px rgba(10,10,10,0.1);padding:0.5rem 0}html.theme--documenter-dark .navbar-menu.is-active{display:block}html.theme--documenter-dark .navbar.is-fixed-bottom-touch,html.theme--documenter-dark .navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}html.theme--documenter-dark .navbar.is-fixed-bottom-touch{bottom:0}html.theme--documenter-dark .navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--documenter-dark .navbar.is-fixed-top-touch{top:0}html.theme--documenter-dark .navbar.is-fixed-top .navbar-menu,html.theme--documenter-dark .navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 4rem);overflow:auto}html.theme--documenter-dark html.has-navbar-fixed-top-touch,html.theme--documenter-dark body.has-navbar-fixed-top-touch{padding-top:4rem}html.theme--documenter-dark html.has-navbar-fixed-bottom-touch,html.theme--documenter-dark body.has-navbar-fixed-bottom-touch{padding-bottom:4rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .navbar,html.theme--documenter-dark .navbar-menu,html.theme--documenter-dark .navbar-start,html.theme--documenter-dark .navbar-end{align-items:stretch;display:flex}html.theme--documenter-dark .navbar{min-height:4rem}html.theme--documenter-dark .navbar.is-spaced{padding:1rem 2rem}html.theme--documenter-dark .navbar.is-spaced .navbar-start,html.theme--documenter-dark .navbar.is-spaced .navbar-end{align-items:center}html.theme--documenter-dark .navbar.is-spaced a.navbar-item,html.theme--documenter-dark .navbar.is-spaced .navbar-link{border-radius:.4em}html.theme--documenter-dark .navbar.is-transparent a.navbar-item:focus,html.theme--documenter-dark .navbar.is-transparent a.navbar-item:hover,html.theme--documenter-dark .navbar.is-transparent a.navbar-item.is-active,html.theme--documenter-dark .navbar.is-transparent .navbar-link:focus,html.theme--documenter-dark .navbar.is-transparent .navbar-link:hover,html.theme--documenter-dark .navbar.is-transparent .navbar-link.is-active{background-color:transparent !important}html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item:focus,html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#dbdee0}html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#1abc9c}html.theme--documenter-dark .navbar-burger{display:none}html.theme--documenter-dark .navbar-item,html.theme--documenter-dark .navbar-link{align-items:center;display:flex}html.theme--documenter-dark .navbar-item.has-dropdown{align-items:stretch}html.theme--documenter-dark .navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(0.25em, -0.25em)}html.theme--documenter-dark .navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:1px solid rgba(0,0,0,0.2);border-radius:8px 8px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,0.1);top:auto}html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown,html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}html.theme--documenter-dark .navbar-menu{flex-grow:1;flex-shrink:0}html.theme--documenter-dark .navbar-start{justify-content:flex-start;margin-right:auto}html.theme--documenter-dark .navbar-end{justify-content:flex-end;margin-left:auto}html.theme--documenter-dark .navbar-dropdown{background-color:#375a7f;border-bottom-left-radius:8px;border-bottom-right-radius:8px;border-top:1px solid rgba(0,0,0,0.2);box-shadow:0 8px 8px rgba(10,10,10,0.1);display:none;font-size:0.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}html.theme--documenter-dark .navbar-dropdown .navbar-item{padding:0.375rem 1rem;white-space:nowrap}html.theme--documenter-dark .navbar-dropdown a.navbar-item{padding-right:3rem}html.theme--documenter-dark .navbar-dropdown a.navbar-item:focus,html.theme--documenter-dark .navbar-dropdown a.navbar-item:hover{background-color:rgba(0,0,0,0);color:#dbdee0}html.theme--documenter-dark .navbar-dropdown a.navbar-item.is-active{background-color:rgba(0,0,0,0);color:#1abc9c}.navbar.is-spaced html.theme--documenter-dark .navbar-dropdown,html.theme--documenter-dark .navbar-dropdown.is-boxed{border-radius:8px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,0.1), 0 0 0 1px rgba(10,10,10,0.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity, transform}html.theme--documenter-dark .navbar-dropdown.is-right{left:auto;right:0}html.theme--documenter-dark .navbar-divider{display:block}html.theme--documenter-dark .navbar>.container .navbar-brand,html.theme--documenter-dark .container>.navbar .navbar-brand{margin-left:-.75rem}html.theme--documenter-dark .navbar>.container .navbar-menu,html.theme--documenter-dark .container>.navbar .navbar-menu{margin-right:-.75rem}html.theme--documenter-dark .navbar.is-fixed-bottom-desktop,html.theme--documenter-dark .navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}html.theme--documenter-dark .navbar.is-fixed-bottom-desktop{bottom:0}html.theme--documenter-dark .navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}html.theme--documenter-dark .navbar.is-fixed-top-desktop{top:0}html.theme--documenter-dark html.has-navbar-fixed-top-desktop,html.theme--documenter-dark body.has-navbar-fixed-top-desktop{padding-top:4rem}html.theme--documenter-dark html.has-navbar-fixed-bottom-desktop,html.theme--documenter-dark body.has-navbar-fixed-bottom-desktop{padding-bottom:4rem}html.theme--documenter-dark html.has-spaced-navbar-fixed-top,html.theme--documenter-dark body.has-spaced-navbar-fixed-top{padding-top:6rem}html.theme--documenter-dark html.has-spaced-navbar-fixed-bottom,html.theme--documenter-dark body.has-spaced-navbar-fixed-bottom{padding-bottom:6rem}html.theme--documenter-dark a.navbar-item.is-active,html.theme--documenter-dark .navbar-link.is-active{color:#1abc9c}html.theme--documenter-dark a.navbar-item.is-active:not(:focus):not(:hover),html.theme--documenter-dark .navbar-link.is-active:not(:focus):not(:hover){background-color:rgba(0,0,0,0)}html.theme--documenter-dark .navbar-item.has-dropdown:focus .navbar-link,html.theme--documenter-dark .navbar-item.has-dropdown:hover .navbar-link,html.theme--documenter-dark .navbar-item.has-dropdown.is-active .navbar-link{background-color:rgba(0,0,0,0)}}html.theme--documenter-dark .hero.is-fullheight-with-navbar{min-height:calc(100vh - 4rem)}html.theme--documenter-dark .pagination{font-size:1rem;margin:-.25rem}html.theme--documenter-dark .pagination.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination{font-size:.75rem}html.theme--documenter-dark .pagination.is-medium{font-size:1.25rem}html.theme--documenter-dark .pagination.is-large{font-size:1.5rem}html.theme--documenter-dark .pagination.is-rounded .pagination-previous,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination .pagination-previous,html.theme--documenter-dark .pagination.is-rounded .pagination-next,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination .pagination-next{padding-left:1em;padding-right:1em;border-radius:9999px}html.theme--documenter-dark .pagination.is-rounded .pagination-link,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.pagination .pagination-link{border-radius:9999px}html.theme--documenter-dark .pagination,html.theme--documenter-dark .pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-ellipsis{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link{border-color:#5e6d6f;color:#1abc9c;min-width:2.5em}html.theme--documenter-dark .pagination-previous:hover,html.theme--documenter-dark .pagination-next:hover,html.theme--documenter-dark .pagination-link:hover{border-color:#8c9b9d;color:#1dd2af}html.theme--documenter-dark .pagination-previous:focus,html.theme--documenter-dark .pagination-next:focus,html.theme--documenter-dark .pagination-link:focus{border-color:#8c9b9d}html.theme--documenter-dark .pagination-previous:active,html.theme--documenter-dark .pagination-next:active,html.theme--documenter-dark .pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2)}html.theme--documenter-dark .pagination-previous[disabled],html.theme--documenter-dark .pagination-previous.is-disabled,html.theme--documenter-dark .pagination-next[disabled],html.theme--documenter-dark .pagination-next.is-disabled,html.theme--documenter-dark .pagination-link[disabled],html.theme--documenter-dark .pagination-link.is-disabled{background-color:#5e6d6f;border-color:#5e6d6f;box-shadow:none;color:#fff;opacity:0.5}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next{padding-left:.75em;padding-right:.75em;white-space:nowrap}html.theme--documenter-dark .pagination-link.is-current{background-color:#1abc9c;border-color:#1abc9c;color:#fff}html.theme--documenter-dark .pagination-ellipsis{color:#8c9b9d;pointer-events:none}html.theme--documenter-dark .pagination-list{flex-wrap:wrap}html.theme--documenter-dark .pagination-list li{list-style:none}@media screen and (max-width: 768px){html.theme--documenter-dark .pagination{flex-wrap:wrap}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-ellipsis{margin-bottom:0;margin-top:0}html.theme--documenter-dark .pagination-previous{order:2}html.theme--documenter-dark .pagination-next{order:3}html.theme--documenter-dark .pagination{justify-content:space-between;margin-bottom:0;margin-top:0}html.theme--documenter-dark .pagination.is-centered .pagination-previous{order:1}html.theme--documenter-dark .pagination.is-centered .pagination-list{justify-content:center;order:2}html.theme--documenter-dark .pagination.is-centered .pagination-next{order:3}html.theme--documenter-dark .pagination.is-right .pagination-previous{order:1}html.theme--documenter-dark .pagination.is-right .pagination-next{order:2}html.theme--documenter-dark .pagination.is-right .pagination-list{justify-content:flex-end;order:3}}html.theme--documenter-dark .panel{border-radius:8px;box-shadow:#171717;font-size:1rem}html.theme--documenter-dark .panel:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}html.theme--documenter-dark .panel.is-white .panel-block.is-active .panel-icon{color:#fff}html.theme--documenter-dark .panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}html.theme--documenter-dark .panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}html.theme--documenter-dark .panel.is-light .panel-heading{background-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .panel.is-light .panel-tabs a.is-active{border-bottom-color:#ecf0f1}html.theme--documenter-dark .panel.is-light .panel-block.is-active .panel-icon{color:#ecf0f1}html.theme--documenter-dark .panel.is-dark .panel-heading,html.theme--documenter-dark .content kbd.panel .panel-heading{background-color:#282f2f;color:#fff}html.theme--documenter-dark .panel.is-dark .panel-tabs a.is-active,html.theme--documenter-dark .content kbd.panel .panel-tabs a.is-active{border-bottom-color:#282f2f}html.theme--documenter-dark .panel.is-dark .panel-block.is-active .panel-icon,html.theme--documenter-dark .content kbd.panel .panel-block.is-active .panel-icon{color:#282f2f}html.theme--documenter-dark .panel.is-primary .panel-heading,html.theme--documenter-dark .docstring>section>a.panel.docs-sourcelink .panel-heading{background-color:#375a7f;color:#fff}html.theme--documenter-dark .panel.is-primary .panel-tabs a.is-active,html.theme--documenter-dark .docstring>section>a.panel.docs-sourcelink .panel-tabs a.is-active{border-bottom-color:#375a7f}html.theme--documenter-dark .panel.is-primary .panel-block.is-active .panel-icon,html.theme--documenter-dark .docstring>section>a.panel.docs-sourcelink .panel-block.is-active .panel-icon{color:#375a7f}html.theme--documenter-dark .panel.is-link .panel-heading{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .panel.is-link .panel-tabs a.is-active{border-bottom-color:#1abc9c}html.theme--documenter-dark .panel.is-link .panel-block.is-active .panel-icon{color:#1abc9c}html.theme--documenter-dark .panel.is-info .panel-heading{background-color:#024c7d;color:#fff}html.theme--documenter-dark .panel.is-info .panel-tabs a.is-active{border-bottom-color:#024c7d}html.theme--documenter-dark .panel.is-info .panel-block.is-active .panel-icon{color:#024c7d}html.theme--documenter-dark .panel.is-success .panel-heading{background-color:#008438;color:#fff}html.theme--documenter-dark .panel.is-success .panel-tabs a.is-active{border-bottom-color:#008438}html.theme--documenter-dark .panel.is-success .panel-block.is-active .panel-icon{color:#008438}html.theme--documenter-dark .panel.is-warning .panel-heading{background-color:#ad8100;color:#fff}html.theme--documenter-dark .panel.is-warning .panel-tabs a.is-active{border-bottom-color:#ad8100}html.theme--documenter-dark .panel.is-warning .panel-block.is-active .panel-icon{color:#ad8100}html.theme--documenter-dark .panel.is-danger .panel-heading{background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .panel.is-danger .panel-tabs a.is-active{border-bottom-color:#9e1b0d}html.theme--documenter-dark .panel.is-danger .panel-block.is-active .panel-icon{color:#9e1b0d}html.theme--documenter-dark .panel-tabs:not(:last-child),html.theme--documenter-dark .panel-block:not(:last-child){border-bottom:1px solid #ededed}html.theme--documenter-dark .panel-heading{background-color:#343c3d;border-radius:8px 8px 0 0;color:#f2f2f2;font-size:1.25em;font-weight:700;line-height:1.25;padding:0.75em 1em}html.theme--documenter-dark .panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}html.theme--documenter-dark .panel-tabs a{border-bottom:1px solid #5e6d6f;margin-bottom:-1px;padding:0.5em}html.theme--documenter-dark .panel-tabs a.is-active{border-bottom-color:#343c3d;color:#17a689}html.theme--documenter-dark .panel-list a{color:#fff}html.theme--documenter-dark .panel-list a:hover{color:#1abc9c}html.theme--documenter-dark .panel-block{align-items:center;color:#f2f2f2;display:flex;justify-content:flex-start;padding:0.5em 0.75em}html.theme--documenter-dark .panel-block input[type="checkbox"]{margin-right:.75em}html.theme--documenter-dark .panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}html.theme--documenter-dark .panel-block.is-wrapped{flex-wrap:wrap}html.theme--documenter-dark .panel-block.is-active{border-left-color:#1abc9c;color:#17a689}html.theme--documenter-dark .panel-block.is-active .panel-icon{color:#1abc9c}html.theme--documenter-dark .panel-block:last-child{border-bottom-left-radius:8px;border-bottom-right-radius:8px}html.theme--documenter-dark a.panel-block,html.theme--documenter-dark label.panel-block{cursor:pointer}html.theme--documenter-dark a.panel-block:hover,html.theme--documenter-dark label.panel-block:hover{background-color:#282f2f}html.theme--documenter-dark .panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#fff;margin-right:.75em}html.theme--documenter-dark .panel-icon .fa{font-size:inherit;line-height:inherit}html.theme--documenter-dark .tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}html.theme--documenter-dark .tabs a{align-items:center;border-bottom-color:#5e6d6f;border-bottom-style:solid;border-bottom-width:1px;color:#fff;display:flex;justify-content:center;margin-bottom:-1px;padding:0.5em 1em;vertical-align:top}html.theme--documenter-dark .tabs a:hover{border-bottom-color:#f2f2f2;color:#f2f2f2}html.theme--documenter-dark .tabs li{display:block}html.theme--documenter-dark .tabs li.is-active a{border-bottom-color:#1abc9c;color:#1abc9c}html.theme--documenter-dark .tabs ul{align-items:center;border-bottom-color:#5e6d6f;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}html.theme--documenter-dark .tabs ul.is-left{padding-right:0.75em}html.theme--documenter-dark .tabs ul.is-center{flex:none;justify-content:center;padding-left:0.75em;padding-right:0.75em}html.theme--documenter-dark .tabs ul.is-right{justify-content:flex-end;padding-left:0.75em}html.theme--documenter-dark .tabs .icon:first-child{margin-right:.5em}html.theme--documenter-dark .tabs .icon:last-child{margin-left:.5em}html.theme--documenter-dark .tabs.is-centered ul{justify-content:center}html.theme--documenter-dark .tabs.is-right ul{justify-content:flex-end}html.theme--documenter-dark .tabs.is-boxed a{border:1px solid transparent;border-radius:.4em .4em 0 0}html.theme--documenter-dark .tabs.is-boxed a:hover{background-color:#282f2f;border-bottom-color:#5e6d6f}html.theme--documenter-dark .tabs.is-boxed li.is-active a{background-color:#fff;border-color:#5e6d6f;border-bottom-color:rgba(0,0,0,0) !important}html.theme--documenter-dark .tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}html.theme--documenter-dark .tabs.is-toggle a{border-color:#5e6d6f;border-style:solid;border-width:1px;margin-bottom:0;position:relative}html.theme--documenter-dark .tabs.is-toggle a:hover{background-color:#282f2f;border-color:#8c9b9d;z-index:2}html.theme--documenter-dark .tabs.is-toggle li+li{margin-left:-1px}html.theme--documenter-dark .tabs.is-toggle li:first-child a{border-top-left-radius:.4em;border-bottom-left-radius:.4em}html.theme--documenter-dark .tabs.is-toggle li:last-child a{border-top-right-radius:.4em;border-bottom-right-radius:.4em}html.theme--documenter-dark .tabs.is-toggle li.is-active a{background-color:#1abc9c;border-color:#1abc9c;color:#fff;z-index:1}html.theme--documenter-dark .tabs.is-toggle ul{border-bottom:none}html.theme--documenter-dark .tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:9999px;border-top-left-radius:9999px;padding-left:1.25em}html.theme--documenter-dark .tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:9999px;border-top-right-radius:9999px;padding-right:1.25em}html.theme--documenter-dark .tabs.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.tabs{font-size:.75rem}html.theme--documenter-dark .tabs.is-medium{font-size:1.25rem}html.theme--documenter-dark .tabs.is-large{font-size:1.5rem}html.theme--documenter-dark .column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>html.theme--documenter-dark .column.is-narrow{flex:none;width:unset}.columns.is-mobile>html.theme--documenter-dark .column.is-full{flex:none;width:100%}.columns.is-mobile>html.theme--documenter-dark .column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>html.theme--documenter-dark .column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>html.theme--documenter-dark .column.is-half{flex:none;width:50%}.columns.is-mobile>html.theme--documenter-dark .column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>html.theme--documenter-dark .column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>html.theme--documenter-dark .column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>html.theme--documenter-dark .column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>html.theme--documenter-dark .column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>html.theme--documenter-dark .column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-half{margin-left:50%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>html.theme--documenter-dark .column.is-0{flex:none;width:0%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-0{margin-left:0%}.columns.is-mobile>html.theme--documenter-dark .column.is-1{flex:none;width:8.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-1{margin-left:8.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-2{flex:none;width:16.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-2{margin-left:16.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-3{flex:none;width:25%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-3{margin-left:25%}.columns.is-mobile>html.theme--documenter-dark .column.is-4{flex:none;width:33.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-4{margin-left:33.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-5{flex:none;width:41.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-5{margin-left:41.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-6{flex:none;width:50%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-6{margin-left:50%}.columns.is-mobile>html.theme--documenter-dark .column.is-7{flex:none;width:58.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-7{margin-left:58.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-8{flex:none;width:66.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-8{margin-left:66.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-9{flex:none;width:75%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-9{margin-left:75%}.columns.is-mobile>html.theme--documenter-dark .column.is-10{flex:none;width:83.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-10{margin-left:83.33333337%}.columns.is-mobile>html.theme--documenter-dark .column.is-11{flex:none;width:91.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-11{margin-left:91.66666674%}.columns.is-mobile>html.theme--documenter-dark .column.is-12{flex:none;width:100%}.columns.is-mobile>html.theme--documenter-dark .column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){html.theme--documenter-dark .column.is-narrow-mobile{flex:none;width:unset}html.theme--documenter-dark .column.is-full-mobile{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-mobile{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-mobile{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-mobile{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-mobile{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-mobile{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-mobile{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-mobile{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-mobile{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-mobile{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-mobile{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-mobile{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-mobile{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-mobile{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-mobile{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-mobile{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-mobile{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-mobile{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-mobile{margin-left:80%}html.theme--documenter-dark .column.is-0-mobile{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-mobile{margin-left:0%}html.theme--documenter-dark .column.is-1-mobile{flex:none;width:8.33333337%}html.theme--documenter-dark .column.is-offset-1-mobile{margin-left:8.33333337%}html.theme--documenter-dark .column.is-2-mobile{flex:none;width:16.66666674%}html.theme--documenter-dark .column.is-offset-2-mobile{margin-left:16.66666674%}html.theme--documenter-dark .column.is-3-mobile{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-mobile{margin-left:25%}html.theme--documenter-dark .column.is-4-mobile{flex:none;width:33.33333337%}html.theme--documenter-dark .column.is-offset-4-mobile{margin-left:33.33333337%}html.theme--documenter-dark .column.is-5-mobile{flex:none;width:41.66666674%}html.theme--documenter-dark .column.is-offset-5-mobile{margin-left:41.66666674%}html.theme--documenter-dark .column.is-6-mobile{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-mobile{margin-left:50%}html.theme--documenter-dark .column.is-7-mobile{flex:none;width:58.33333337%}html.theme--documenter-dark .column.is-offset-7-mobile{margin-left:58.33333337%}html.theme--documenter-dark .column.is-8-mobile{flex:none;width:66.66666674%}html.theme--documenter-dark .column.is-offset-8-mobile{margin-left:66.66666674%}html.theme--documenter-dark .column.is-9-mobile{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-mobile{margin-left:75%}html.theme--documenter-dark .column.is-10-mobile{flex:none;width:83.33333337%}html.theme--documenter-dark .column.is-offset-10-mobile{margin-left:83.33333337%}html.theme--documenter-dark .column.is-11-mobile{flex:none;width:91.66666674%}html.theme--documenter-dark .column.is-offset-11-mobile{margin-left:91.66666674%}html.theme--documenter-dark .column.is-12-mobile{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .column.is-narrow,html.theme--documenter-dark .column.is-narrow-tablet{flex:none;width:unset}html.theme--documenter-dark .column.is-full,html.theme--documenter-dark .column.is-full-tablet{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters,html.theme--documenter-dark .column.is-three-quarters-tablet{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds,html.theme--documenter-dark .column.is-two-thirds-tablet{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half,html.theme--documenter-dark .column.is-half-tablet{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third,html.theme--documenter-dark .column.is-one-third-tablet{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter,html.theme--documenter-dark .column.is-one-quarter-tablet{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth,html.theme--documenter-dark .column.is-one-fifth-tablet{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths,html.theme--documenter-dark .column.is-two-fifths-tablet{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths,html.theme--documenter-dark .column.is-three-fifths-tablet{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths,html.theme--documenter-dark .column.is-four-fifths-tablet{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters,html.theme--documenter-dark .column.is-offset-three-quarters-tablet{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds,html.theme--documenter-dark .column.is-offset-two-thirds-tablet{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half,html.theme--documenter-dark .column.is-offset-half-tablet{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third,html.theme--documenter-dark .column.is-offset-one-third-tablet{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter,html.theme--documenter-dark .column.is-offset-one-quarter-tablet{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth,html.theme--documenter-dark .column.is-offset-one-fifth-tablet{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths,html.theme--documenter-dark .column.is-offset-two-fifths-tablet{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths,html.theme--documenter-dark .column.is-offset-three-fifths-tablet{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths,html.theme--documenter-dark .column.is-offset-four-fifths-tablet{margin-left:80%}html.theme--documenter-dark .column.is-0,html.theme--documenter-dark .column.is-0-tablet{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0,html.theme--documenter-dark .column.is-offset-0-tablet{margin-left:0%}html.theme--documenter-dark .column.is-1,html.theme--documenter-dark .column.is-1-tablet{flex:none;width:8.33333337%}html.theme--documenter-dark .column.is-offset-1,html.theme--documenter-dark .column.is-offset-1-tablet{margin-left:8.33333337%}html.theme--documenter-dark .column.is-2,html.theme--documenter-dark .column.is-2-tablet{flex:none;width:16.66666674%}html.theme--documenter-dark .column.is-offset-2,html.theme--documenter-dark .column.is-offset-2-tablet{margin-left:16.66666674%}html.theme--documenter-dark .column.is-3,html.theme--documenter-dark .column.is-3-tablet{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3,html.theme--documenter-dark .column.is-offset-3-tablet{margin-left:25%}html.theme--documenter-dark .column.is-4,html.theme--documenter-dark .column.is-4-tablet{flex:none;width:33.33333337%}html.theme--documenter-dark .column.is-offset-4,html.theme--documenter-dark .column.is-offset-4-tablet{margin-left:33.33333337%}html.theme--documenter-dark .column.is-5,html.theme--documenter-dark .column.is-5-tablet{flex:none;width:41.66666674%}html.theme--documenter-dark .column.is-offset-5,html.theme--documenter-dark .column.is-offset-5-tablet{margin-left:41.66666674%}html.theme--documenter-dark .column.is-6,html.theme--documenter-dark .column.is-6-tablet{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6,html.theme--documenter-dark .column.is-offset-6-tablet{margin-left:50%}html.theme--documenter-dark .column.is-7,html.theme--documenter-dark .column.is-7-tablet{flex:none;width:58.33333337%}html.theme--documenter-dark .column.is-offset-7,html.theme--documenter-dark .column.is-offset-7-tablet{margin-left:58.33333337%}html.theme--documenter-dark .column.is-8,html.theme--documenter-dark .column.is-8-tablet{flex:none;width:66.66666674%}html.theme--documenter-dark .column.is-offset-8,html.theme--documenter-dark .column.is-offset-8-tablet{margin-left:66.66666674%}html.theme--documenter-dark .column.is-9,html.theme--documenter-dark .column.is-9-tablet{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9,html.theme--documenter-dark .column.is-offset-9-tablet{margin-left:75%}html.theme--documenter-dark .column.is-10,html.theme--documenter-dark .column.is-10-tablet{flex:none;width:83.33333337%}html.theme--documenter-dark .column.is-offset-10,html.theme--documenter-dark .column.is-offset-10-tablet{margin-left:83.33333337%}html.theme--documenter-dark .column.is-11,html.theme--documenter-dark .column.is-11-tablet{flex:none;width:91.66666674%}html.theme--documenter-dark .column.is-offset-11,html.theme--documenter-dark .column.is-offset-11-tablet{margin-left:91.66666674%}html.theme--documenter-dark .column.is-12,html.theme--documenter-dark .column.is-12-tablet{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12,html.theme--documenter-dark .column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1055px){html.theme--documenter-dark .column.is-narrow-touch{flex:none;width:unset}html.theme--documenter-dark .column.is-full-touch{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-touch{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-touch{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-touch{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-touch{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-touch{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-touch{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-touch{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-touch{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-touch{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-touch{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-touch{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-touch{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-touch{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-touch{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-touch{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-touch{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-touch{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-touch{margin-left:80%}html.theme--documenter-dark .column.is-0-touch{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-touch{margin-left:0%}html.theme--documenter-dark .column.is-1-touch{flex:none;width:8.33333337%}html.theme--documenter-dark .column.is-offset-1-touch{margin-left:8.33333337%}html.theme--documenter-dark .column.is-2-touch{flex:none;width:16.66666674%}html.theme--documenter-dark .column.is-offset-2-touch{margin-left:16.66666674%}html.theme--documenter-dark .column.is-3-touch{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-touch{margin-left:25%}html.theme--documenter-dark .column.is-4-touch{flex:none;width:33.33333337%}html.theme--documenter-dark .column.is-offset-4-touch{margin-left:33.33333337%}html.theme--documenter-dark .column.is-5-touch{flex:none;width:41.66666674%}html.theme--documenter-dark .column.is-offset-5-touch{margin-left:41.66666674%}html.theme--documenter-dark .column.is-6-touch{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-touch{margin-left:50%}html.theme--documenter-dark .column.is-7-touch{flex:none;width:58.33333337%}html.theme--documenter-dark .column.is-offset-7-touch{margin-left:58.33333337%}html.theme--documenter-dark .column.is-8-touch{flex:none;width:66.66666674%}html.theme--documenter-dark .column.is-offset-8-touch{margin-left:66.66666674%}html.theme--documenter-dark .column.is-9-touch{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-touch{margin-left:75%}html.theme--documenter-dark .column.is-10-touch{flex:none;width:83.33333337%}html.theme--documenter-dark .column.is-offset-10-touch{margin-left:83.33333337%}html.theme--documenter-dark .column.is-11-touch{flex:none;width:91.66666674%}html.theme--documenter-dark .column.is-offset-11-touch{margin-left:91.66666674%}html.theme--documenter-dark .column.is-12-touch{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1056px){html.theme--documenter-dark .column.is-narrow-desktop{flex:none;width:unset}html.theme--documenter-dark .column.is-full-desktop{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-desktop{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-desktop{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-desktop{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-desktop{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-desktop{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-desktop{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-desktop{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-desktop{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-desktop{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-desktop{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-desktop{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-desktop{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-desktop{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-desktop{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-desktop{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-desktop{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-desktop{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-desktop{margin-left:80%}html.theme--documenter-dark .column.is-0-desktop{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-desktop{margin-left:0%}html.theme--documenter-dark .column.is-1-desktop{flex:none;width:8.33333337%}html.theme--documenter-dark .column.is-offset-1-desktop{margin-left:8.33333337%}html.theme--documenter-dark .column.is-2-desktop{flex:none;width:16.66666674%}html.theme--documenter-dark .column.is-offset-2-desktop{margin-left:16.66666674%}html.theme--documenter-dark .column.is-3-desktop{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-desktop{margin-left:25%}html.theme--documenter-dark .column.is-4-desktop{flex:none;width:33.33333337%}html.theme--documenter-dark .column.is-offset-4-desktop{margin-left:33.33333337%}html.theme--documenter-dark .column.is-5-desktop{flex:none;width:41.66666674%}html.theme--documenter-dark .column.is-offset-5-desktop{margin-left:41.66666674%}html.theme--documenter-dark .column.is-6-desktop{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-desktop{margin-left:50%}html.theme--documenter-dark .column.is-7-desktop{flex:none;width:58.33333337%}html.theme--documenter-dark .column.is-offset-7-desktop{margin-left:58.33333337%}html.theme--documenter-dark .column.is-8-desktop{flex:none;width:66.66666674%}html.theme--documenter-dark .column.is-offset-8-desktop{margin-left:66.66666674%}html.theme--documenter-dark .column.is-9-desktop{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-desktop{margin-left:75%}html.theme--documenter-dark .column.is-10-desktop{flex:none;width:83.33333337%}html.theme--documenter-dark .column.is-offset-10-desktop{margin-left:83.33333337%}html.theme--documenter-dark .column.is-11-desktop{flex:none;width:91.66666674%}html.theme--documenter-dark .column.is-offset-11-desktop{margin-left:91.66666674%}html.theme--documenter-dark .column.is-12-desktop{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){html.theme--documenter-dark .column.is-narrow-widescreen{flex:none;width:unset}html.theme--documenter-dark .column.is-full-widescreen{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-widescreen{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-widescreen{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-widescreen{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-widescreen{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-widescreen{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-widescreen{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-widescreen{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-widescreen{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-widescreen{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-widescreen{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-widescreen{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-widescreen{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-widescreen{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-widescreen{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-widescreen{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-widescreen{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-widescreen{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-widescreen{margin-left:80%}html.theme--documenter-dark .column.is-0-widescreen{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-widescreen{margin-left:0%}html.theme--documenter-dark .column.is-1-widescreen{flex:none;width:8.33333337%}html.theme--documenter-dark .column.is-offset-1-widescreen{margin-left:8.33333337%}html.theme--documenter-dark .column.is-2-widescreen{flex:none;width:16.66666674%}html.theme--documenter-dark .column.is-offset-2-widescreen{margin-left:16.66666674%}html.theme--documenter-dark .column.is-3-widescreen{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-widescreen{margin-left:25%}html.theme--documenter-dark .column.is-4-widescreen{flex:none;width:33.33333337%}html.theme--documenter-dark .column.is-offset-4-widescreen{margin-left:33.33333337%}html.theme--documenter-dark .column.is-5-widescreen{flex:none;width:41.66666674%}html.theme--documenter-dark .column.is-offset-5-widescreen{margin-left:41.66666674%}html.theme--documenter-dark .column.is-6-widescreen{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-widescreen{margin-left:50%}html.theme--documenter-dark .column.is-7-widescreen{flex:none;width:58.33333337%}html.theme--documenter-dark .column.is-offset-7-widescreen{margin-left:58.33333337%}html.theme--documenter-dark .column.is-8-widescreen{flex:none;width:66.66666674%}html.theme--documenter-dark .column.is-offset-8-widescreen{margin-left:66.66666674%}html.theme--documenter-dark .column.is-9-widescreen{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-widescreen{margin-left:75%}html.theme--documenter-dark .column.is-10-widescreen{flex:none;width:83.33333337%}html.theme--documenter-dark .column.is-offset-10-widescreen{margin-left:83.33333337%}html.theme--documenter-dark .column.is-11-widescreen{flex:none;width:91.66666674%}html.theme--documenter-dark .column.is-offset-11-widescreen{margin-left:91.66666674%}html.theme--documenter-dark .column.is-12-widescreen{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){html.theme--documenter-dark .column.is-narrow-fullhd{flex:none;width:unset}html.theme--documenter-dark .column.is-full-fullhd{flex:none;width:100%}html.theme--documenter-dark .column.is-three-quarters-fullhd{flex:none;width:75%}html.theme--documenter-dark .column.is-two-thirds-fullhd{flex:none;width:66.6666%}html.theme--documenter-dark .column.is-half-fullhd{flex:none;width:50%}html.theme--documenter-dark .column.is-one-third-fullhd{flex:none;width:33.3333%}html.theme--documenter-dark .column.is-one-quarter-fullhd{flex:none;width:25%}html.theme--documenter-dark .column.is-one-fifth-fullhd{flex:none;width:20%}html.theme--documenter-dark .column.is-two-fifths-fullhd{flex:none;width:40%}html.theme--documenter-dark .column.is-three-fifths-fullhd{flex:none;width:60%}html.theme--documenter-dark .column.is-four-fifths-fullhd{flex:none;width:80%}html.theme--documenter-dark .column.is-offset-three-quarters-fullhd{margin-left:75%}html.theme--documenter-dark .column.is-offset-two-thirds-fullhd{margin-left:66.6666%}html.theme--documenter-dark .column.is-offset-half-fullhd{margin-left:50%}html.theme--documenter-dark .column.is-offset-one-third-fullhd{margin-left:33.3333%}html.theme--documenter-dark .column.is-offset-one-quarter-fullhd{margin-left:25%}html.theme--documenter-dark .column.is-offset-one-fifth-fullhd{margin-left:20%}html.theme--documenter-dark .column.is-offset-two-fifths-fullhd{margin-left:40%}html.theme--documenter-dark .column.is-offset-three-fifths-fullhd{margin-left:60%}html.theme--documenter-dark .column.is-offset-four-fifths-fullhd{margin-left:80%}html.theme--documenter-dark .column.is-0-fullhd{flex:none;width:0%}html.theme--documenter-dark .column.is-offset-0-fullhd{margin-left:0%}html.theme--documenter-dark .column.is-1-fullhd{flex:none;width:8.33333337%}html.theme--documenter-dark .column.is-offset-1-fullhd{margin-left:8.33333337%}html.theme--documenter-dark .column.is-2-fullhd{flex:none;width:16.66666674%}html.theme--documenter-dark .column.is-offset-2-fullhd{margin-left:16.66666674%}html.theme--documenter-dark .column.is-3-fullhd{flex:none;width:25%}html.theme--documenter-dark .column.is-offset-3-fullhd{margin-left:25%}html.theme--documenter-dark .column.is-4-fullhd{flex:none;width:33.33333337%}html.theme--documenter-dark .column.is-offset-4-fullhd{margin-left:33.33333337%}html.theme--documenter-dark .column.is-5-fullhd{flex:none;width:41.66666674%}html.theme--documenter-dark .column.is-offset-5-fullhd{margin-left:41.66666674%}html.theme--documenter-dark .column.is-6-fullhd{flex:none;width:50%}html.theme--documenter-dark .column.is-offset-6-fullhd{margin-left:50%}html.theme--documenter-dark .column.is-7-fullhd{flex:none;width:58.33333337%}html.theme--documenter-dark .column.is-offset-7-fullhd{margin-left:58.33333337%}html.theme--documenter-dark .column.is-8-fullhd{flex:none;width:66.66666674%}html.theme--documenter-dark .column.is-offset-8-fullhd{margin-left:66.66666674%}html.theme--documenter-dark .column.is-9-fullhd{flex:none;width:75%}html.theme--documenter-dark .column.is-offset-9-fullhd{margin-left:75%}html.theme--documenter-dark .column.is-10-fullhd{flex:none;width:83.33333337%}html.theme--documenter-dark .column.is-offset-10-fullhd{margin-left:83.33333337%}html.theme--documenter-dark .column.is-11-fullhd{flex:none;width:91.66666674%}html.theme--documenter-dark .column.is-offset-11-fullhd{margin-left:91.66666674%}html.theme--documenter-dark .column.is-12-fullhd{flex:none;width:100%}html.theme--documenter-dark .column.is-offset-12-fullhd{margin-left:100%}}html.theme--documenter-dark .columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--documenter-dark .columns:last-child{margin-bottom:-.75rem}html.theme--documenter-dark .columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}html.theme--documenter-dark .columns.is-centered{justify-content:center}html.theme--documenter-dark .columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}html.theme--documenter-dark .columns.is-gapless>.column{margin:0;padding:0 !important}html.theme--documenter-dark .columns.is-gapless:not(:last-child){margin-bottom:1.5rem}html.theme--documenter-dark .columns.is-gapless:last-child{margin-bottom:0}html.theme--documenter-dark .columns.is-mobile{display:flex}html.theme--documenter-dark .columns.is-multiline{flex-wrap:wrap}html.theme--documenter-dark .columns.is-vcentered{align-items:center}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns:not(.is-desktop){display:flex}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-desktop{display:flex}}html.theme--documenter-dark .columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}html.theme--documenter-dark .columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}html.theme--documenter-dark .columns.is-variable.is-0{--columnGap: 0rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-0-mobile{--columnGap: 0rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-0-tablet{--columnGap: 0rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-0-tablet-only{--columnGap: 0rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-0-touch{--columnGap: 0rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-0-desktop{--columnGap: 0rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-0-desktop-only{--columnGap: 0rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-0-widescreen{--columnGap: 0rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-0-widescreen-only{--columnGap: 0rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-0-fullhd{--columnGap: 0rem}}html.theme--documenter-dark .columns.is-variable.is-1{--columnGap: .25rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-1-mobile{--columnGap: .25rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-1-tablet{--columnGap: .25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-1-tablet-only{--columnGap: .25rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-1-touch{--columnGap: .25rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-1-desktop{--columnGap: .25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-1-desktop-only{--columnGap: .25rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-1-widescreen{--columnGap: .25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-1-widescreen-only{--columnGap: .25rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-1-fullhd{--columnGap: .25rem}}html.theme--documenter-dark .columns.is-variable.is-2{--columnGap: .5rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-2-mobile{--columnGap: .5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-2-tablet{--columnGap: .5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-2-tablet-only{--columnGap: .5rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-2-touch{--columnGap: .5rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-2-desktop{--columnGap: .5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-2-desktop-only{--columnGap: .5rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-2-widescreen{--columnGap: .5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-2-widescreen-only{--columnGap: .5rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-2-fullhd{--columnGap: .5rem}}html.theme--documenter-dark .columns.is-variable.is-3{--columnGap: .75rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-3-mobile{--columnGap: .75rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-3-tablet{--columnGap: .75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-3-tablet-only{--columnGap: .75rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-3-touch{--columnGap: .75rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-3-desktop{--columnGap: .75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-3-desktop-only{--columnGap: .75rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-3-widescreen{--columnGap: .75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-3-widescreen-only{--columnGap: .75rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-3-fullhd{--columnGap: .75rem}}html.theme--documenter-dark .columns.is-variable.is-4{--columnGap: 1rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-4-mobile{--columnGap: 1rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-4-tablet{--columnGap: 1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-4-tablet-only{--columnGap: 1rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-4-touch{--columnGap: 1rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-4-desktop{--columnGap: 1rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-4-desktop-only{--columnGap: 1rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-4-widescreen{--columnGap: 1rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-4-widescreen-only{--columnGap: 1rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-4-fullhd{--columnGap: 1rem}}html.theme--documenter-dark .columns.is-variable.is-5{--columnGap: 1.25rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-5-mobile{--columnGap: 1.25rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-5-tablet{--columnGap: 1.25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-5-tablet-only{--columnGap: 1.25rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-5-touch{--columnGap: 1.25rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-5-desktop{--columnGap: 1.25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-5-desktop-only{--columnGap: 1.25rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-5-widescreen{--columnGap: 1.25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-5-widescreen-only{--columnGap: 1.25rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-5-fullhd{--columnGap: 1.25rem}}html.theme--documenter-dark .columns.is-variable.is-6{--columnGap: 1.5rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-6-mobile{--columnGap: 1.5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-6-tablet{--columnGap: 1.5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-6-tablet-only{--columnGap: 1.5rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-6-touch{--columnGap: 1.5rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-6-desktop{--columnGap: 1.5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-6-desktop-only{--columnGap: 1.5rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-6-widescreen{--columnGap: 1.5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-6-widescreen-only{--columnGap: 1.5rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-6-fullhd{--columnGap: 1.5rem}}html.theme--documenter-dark .columns.is-variable.is-7{--columnGap: 1.75rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-7-mobile{--columnGap: 1.75rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-7-tablet{--columnGap: 1.75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-7-tablet-only{--columnGap: 1.75rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-7-touch{--columnGap: 1.75rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-7-desktop{--columnGap: 1.75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-7-desktop-only{--columnGap: 1.75rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-7-widescreen{--columnGap: 1.75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-7-widescreen-only{--columnGap: 1.75rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-7-fullhd{--columnGap: 1.75rem}}html.theme--documenter-dark .columns.is-variable.is-8{--columnGap: 2rem}@media screen and (max-width: 768px){html.theme--documenter-dark .columns.is-variable.is-8-mobile{--columnGap: 2rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .columns.is-variable.is-8-tablet{--columnGap: 2rem}}@media screen and (min-width: 769px) and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-8-tablet-only{--columnGap: 2rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark .columns.is-variable.is-8-touch{--columnGap: 2rem}}@media screen and (min-width: 1056px){html.theme--documenter-dark .columns.is-variable.is-8-desktop{--columnGap: 2rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){html.theme--documenter-dark .columns.is-variable.is-8-desktop-only{--columnGap: 2rem}}@media screen and (min-width: 1216px){html.theme--documenter-dark .columns.is-variable.is-8-widescreen{--columnGap: 2rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){html.theme--documenter-dark .columns.is-variable.is-8-widescreen-only{--columnGap: 2rem}}@media screen and (min-width: 1408px){html.theme--documenter-dark .columns.is-variable.is-8-fullhd{--columnGap: 2rem}}html.theme--documenter-dark .tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}html.theme--documenter-dark .tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}html.theme--documenter-dark .tile.is-ancestor:last-child{margin-bottom:-.75rem}html.theme--documenter-dark .tile.is-ancestor:not(:last-child){margin-bottom:.75rem}html.theme--documenter-dark .tile.is-child{margin:0 !important}html.theme--documenter-dark .tile.is-parent{padding:.75rem}html.theme--documenter-dark .tile.is-vertical{flex-direction:column}html.theme--documenter-dark .tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px),print{html.theme--documenter-dark .tile:not(.is-child){display:flex}html.theme--documenter-dark .tile.is-1{flex:none;width:8.33333337%}html.theme--documenter-dark .tile.is-2{flex:none;width:16.66666674%}html.theme--documenter-dark .tile.is-3{flex:none;width:25%}html.theme--documenter-dark .tile.is-4{flex:none;width:33.33333337%}html.theme--documenter-dark .tile.is-5{flex:none;width:41.66666674%}html.theme--documenter-dark .tile.is-6{flex:none;width:50%}html.theme--documenter-dark .tile.is-7{flex:none;width:58.33333337%}html.theme--documenter-dark .tile.is-8{flex:none;width:66.66666674%}html.theme--documenter-dark .tile.is-9{flex:none;width:75%}html.theme--documenter-dark .tile.is-10{flex:none;width:83.33333337%}html.theme--documenter-dark .tile.is-11{flex:none;width:91.66666674%}html.theme--documenter-dark .tile.is-12{flex:none;width:100%}}html.theme--documenter-dark .hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}html.theme--documenter-dark .hero .navbar{background:none}html.theme--documenter-dark .hero .tabs ul{border-bottom:none}html.theme--documenter-dark .hero.is-white{background-color:#fff;color:#0a0a0a}html.theme--documenter-dark .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-white strong{color:inherit}html.theme--documenter-dark .hero.is-white .title{color:#0a0a0a}html.theme--documenter-dark .hero.is-white .subtitle{color:rgba(10,10,10,0.9)}html.theme--documenter-dark .hero.is-white .subtitle a:not(.button),html.theme--documenter-dark .hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-white .navbar-menu{background-color:#fff}}html.theme--documenter-dark .hero.is-white .navbar-item,html.theme--documenter-dark .hero.is-white .navbar-link{color:rgba(10,10,10,0.7)}html.theme--documenter-dark .hero.is-white a.navbar-item:hover,html.theme--documenter-dark .hero.is-white a.navbar-item.is-active,html.theme--documenter-dark .hero.is-white .navbar-link:hover,html.theme--documenter-dark .hero.is-white .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}html.theme--documenter-dark .hero.is-white .tabs a{color:#0a0a0a;opacity:0.9}html.theme--documenter-dark .hero.is-white .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-white .tabs li.is-active a{color:#fff !important;opacity:1}html.theme--documenter-dark .hero.is-white .tabs.is-boxed a,html.theme--documenter-dark .hero.is-white .tabs.is-toggle a{color:#0a0a0a}html.theme--documenter-dark .hero.is-white .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-white .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-white .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-white .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}html.theme--documenter-dark .hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}}html.theme--documenter-dark .hero.is-black{background-color:#0a0a0a;color:#fff}html.theme--documenter-dark .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-black strong{color:inherit}html.theme--documenter-dark .hero.is-black .title{color:#fff}html.theme--documenter-dark .hero.is-black .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-black .subtitle a:not(.button),html.theme--documenter-dark .hero.is-black .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-black .navbar-menu{background-color:#0a0a0a}}html.theme--documenter-dark .hero.is-black .navbar-item,html.theme--documenter-dark .hero.is-black .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-black a.navbar-item:hover,html.theme--documenter-dark .hero.is-black a.navbar-item.is-active,html.theme--documenter-dark .hero.is-black .navbar-link:hover,html.theme--documenter-dark .hero.is-black .navbar-link.is-active{background-color:#000;color:#fff}html.theme--documenter-dark .hero.is-black .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-black .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-black .tabs li.is-active a{color:#0a0a0a !important;opacity:1}html.theme--documenter-dark .hero.is-black .tabs.is-boxed a,html.theme--documenter-dark .hero.is-black .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-black .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-black .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-black .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-black .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}html.theme--documenter-dark .hero.is-black.is-bold{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}}html.theme--documenter-dark .hero.is-light{background-color:#ecf0f1;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-light strong{color:inherit}html.theme--documenter-dark .hero.is-light .title{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-light .subtitle{color:rgba(0,0,0,0.9)}html.theme--documenter-dark .hero.is-light .subtitle a:not(.button),html.theme--documenter-dark .hero.is-light .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-light .navbar-menu{background-color:#ecf0f1}}html.theme--documenter-dark .hero.is-light .navbar-item,html.theme--documenter-dark .hero.is-light .navbar-link{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-light a.navbar-item:hover,html.theme--documenter-dark .hero.is-light a.navbar-item.is-active,html.theme--documenter-dark .hero.is-light .navbar-link:hover,html.theme--documenter-dark .hero.is-light .navbar-link.is-active{background-color:#dde4e6;color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-light .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}html.theme--documenter-dark .hero.is-light .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-light .tabs li.is-active a{color:#ecf0f1 !important;opacity:1}html.theme--documenter-dark .hero.is-light .tabs.is-boxed a,html.theme--documenter-dark .hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,0.7)}html.theme--documenter-dark .hero.is-light .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-light .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-light .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-light .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#ecf0f1}html.theme--documenter-dark .hero.is-light.is-bold{background-image:linear-gradient(141deg, #cadfe0 0%, #ecf0f1 71%, #fafbfc 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #cadfe0 0%, #ecf0f1 71%, #fafbfc 100%)}}html.theme--documenter-dark .hero.is-dark,html.theme--documenter-dark .content kbd.hero{background-color:#282f2f;color:#fff}html.theme--documenter-dark .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-dark strong,html.theme--documenter-dark .content kbd.hero strong{color:inherit}html.theme--documenter-dark .hero.is-dark .title,html.theme--documenter-dark .content kbd.hero .title{color:#fff}html.theme--documenter-dark .hero.is-dark .subtitle,html.theme--documenter-dark .content kbd.hero .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-dark .subtitle a:not(.button),html.theme--documenter-dark .content kbd.hero .subtitle a:not(.button),html.theme--documenter-dark .hero.is-dark .subtitle strong,html.theme--documenter-dark .content kbd.hero .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-dark .navbar-menu,html.theme--documenter-dark .content kbd.hero .navbar-menu{background-color:#282f2f}}html.theme--documenter-dark .hero.is-dark .navbar-item,html.theme--documenter-dark .content kbd.hero .navbar-item,html.theme--documenter-dark .hero.is-dark .navbar-link,html.theme--documenter-dark .content kbd.hero .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-dark a.navbar-item:hover,html.theme--documenter-dark .content kbd.hero a.navbar-item:hover,html.theme--documenter-dark .hero.is-dark a.navbar-item.is-active,html.theme--documenter-dark .content kbd.hero a.navbar-item.is-active,html.theme--documenter-dark .hero.is-dark .navbar-link:hover,html.theme--documenter-dark .content kbd.hero .navbar-link:hover,html.theme--documenter-dark .hero.is-dark .navbar-link.is-active,html.theme--documenter-dark .content kbd.hero .navbar-link.is-active{background-color:#1d2122;color:#fff}html.theme--documenter-dark .hero.is-dark .tabs a,html.theme--documenter-dark .content kbd.hero .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-dark .tabs a:hover,html.theme--documenter-dark .content kbd.hero .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-dark .tabs li.is-active a,html.theme--documenter-dark .content kbd.hero .tabs li.is-active a{color:#282f2f !important;opacity:1}html.theme--documenter-dark .hero.is-dark .tabs.is-boxed a,html.theme--documenter-dark .content kbd.hero .tabs.is-boxed a,html.theme--documenter-dark .hero.is-dark .tabs.is-toggle a,html.theme--documenter-dark .content kbd.hero .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-dark .tabs.is-boxed a:hover,html.theme--documenter-dark .content kbd.hero .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-dark .tabs.is-toggle a:hover,html.theme--documenter-dark .content kbd.hero .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-dark .tabs.is-boxed li.is-active a,html.theme--documenter-dark .content kbd.hero .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-dark .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-dark .tabs.is-toggle li.is-active a,html.theme--documenter-dark .content kbd.hero .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#282f2f}html.theme--documenter-dark .hero.is-dark.is-bold,html.theme--documenter-dark .content kbd.hero.is-bold{background-image:linear-gradient(141deg, #0f1615 0%, #282f2f 71%, #313c40 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-dark.is-bold .navbar-menu,html.theme--documenter-dark .content kbd.hero.is-bold .navbar-menu{background-image:linear-gradient(141deg, #0f1615 0%, #282f2f 71%, #313c40 100%)}}html.theme--documenter-dark .hero.is-primary,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink{background-color:#375a7f;color:#fff}html.theme--documenter-dark .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-primary strong,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink strong{color:inherit}html.theme--documenter-dark .hero.is-primary .title,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .title{color:#fff}html.theme--documenter-dark .hero.is-primary .subtitle,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-primary .subtitle a:not(.button),html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .subtitle a:not(.button),html.theme--documenter-dark .hero.is-primary .subtitle strong,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-primary .navbar-menu,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-menu{background-color:#375a7f}}html.theme--documenter-dark .hero.is-primary .navbar-item,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-item,html.theme--documenter-dark .hero.is-primary .navbar-link,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-primary a.navbar-item:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink a.navbar-item:hover,html.theme--documenter-dark .hero.is-primary a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink a.navbar-item.is-active,html.theme--documenter-dark .hero.is-primary .navbar-link:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-link:hover,html.theme--documenter-dark .hero.is-primary .navbar-link.is-active,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar-link.is-active{background-color:#2f4d6d;color:#fff}html.theme--documenter-dark .hero.is-primary .tabs a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-primary .tabs a:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-primary .tabs li.is-active a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs li.is-active a{color:#375a7f !important;opacity:1}html.theme--documenter-dark .hero.is-primary .tabs.is-boxed a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a,html.theme--documenter-dark .hero.is-primary .tabs.is-toggle a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-primary .tabs.is-boxed a:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-primary .tabs.is-toggle a:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-primary .tabs.is-boxed li.is-active a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-primary .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-primary .tabs.is-toggle li.is-active a,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#375a7f}html.theme--documenter-dark .hero.is-primary.is-bold,html.theme--documenter-dark .docstring>section>a.hero.is-bold.docs-sourcelink{background-image:linear-gradient(141deg, #214b62 0%, #375a7f 71%, #3a5796 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-primary.is-bold .navbar-menu,html.theme--documenter-dark .docstring>section>a.hero.is-bold.docs-sourcelink .navbar-menu{background-image:linear-gradient(141deg, #214b62 0%, #375a7f 71%, #3a5796 100%)}}html.theme--documenter-dark .hero.is-link{background-color:#1abc9c;color:#fff}html.theme--documenter-dark .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-link strong{color:inherit}html.theme--documenter-dark .hero.is-link .title{color:#fff}html.theme--documenter-dark .hero.is-link .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-link .subtitle a:not(.button),html.theme--documenter-dark .hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-link .navbar-menu{background-color:#1abc9c}}html.theme--documenter-dark .hero.is-link .navbar-item,html.theme--documenter-dark .hero.is-link .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-link a.navbar-item:hover,html.theme--documenter-dark .hero.is-link a.navbar-item.is-active,html.theme--documenter-dark .hero.is-link .navbar-link:hover,html.theme--documenter-dark .hero.is-link .navbar-link.is-active{background-color:#17a689;color:#fff}html.theme--documenter-dark .hero.is-link .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-link .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-link .tabs li.is-active a{color:#1abc9c !important;opacity:1}html.theme--documenter-dark .hero.is-link .tabs.is-boxed a,html.theme--documenter-dark .hero.is-link .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-link .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-link .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-link .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-link .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#1abc9c}html.theme--documenter-dark .hero.is-link.is-bold{background-image:linear-gradient(141deg, #0c9764 0%, #1abc9c 71%, #17d8d2 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #0c9764 0%, #1abc9c 71%, #17d8d2 100%)}}html.theme--documenter-dark .hero.is-info{background-color:#024c7d;color:#fff}html.theme--documenter-dark .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-info strong{color:inherit}html.theme--documenter-dark .hero.is-info .title{color:#fff}html.theme--documenter-dark .hero.is-info .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-info .subtitle a:not(.button),html.theme--documenter-dark .hero.is-info .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-info .navbar-menu{background-color:#024c7d}}html.theme--documenter-dark .hero.is-info .navbar-item,html.theme--documenter-dark .hero.is-info .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-info a.navbar-item:hover,html.theme--documenter-dark .hero.is-info a.navbar-item.is-active,html.theme--documenter-dark .hero.is-info .navbar-link:hover,html.theme--documenter-dark .hero.is-info .navbar-link.is-active{background-color:#023d64;color:#fff}html.theme--documenter-dark .hero.is-info .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-info .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-info .tabs li.is-active a{color:#024c7d !important;opacity:1}html.theme--documenter-dark .hero.is-info .tabs.is-boxed a,html.theme--documenter-dark .hero.is-info .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-info .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-info .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-info .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-info .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#024c7d}html.theme--documenter-dark .hero.is-info.is-bold{background-image:linear-gradient(141deg, #003a4c 0%, #024c7d 71%, #004299 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #003a4c 0%, #024c7d 71%, #004299 100%)}}html.theme--documenter-dark .hero.is-success{background-color:#008438;color:#fff}html.theme--documenter-dark .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-success strong{color:inherit}html.theme--documenter-dark .hero.is-success .title{color:#fff}html.theme--documenter-dark .hero.is-success .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-success .subtitle a:not(.button),html.theme--documenter-dark .hero.is-success .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-success .navbar-menu{background-color:#008438}}html.theme--documenter-dark .hero.is-success .navbar-item,html.theme--documenter-dark .hero.is-success .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-success a.navbar-item:hover,html.theme--documenter-dark .hero.is-success a.navbar-item.is-active,html.theme--documenter-dark .hero.is-success .navbar-link:hover,html.theme--documenter-dark .hero.is-success .navbar-link.is-active{background-color:#006b2d;color:#fff}html.theme--documenter-dark .hero.is-success .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-success .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-success .tabs li.is-active a{color:#008438 !important;opacity:1}html.theme--documenter-dark .hero.is-success .tabs.is-boxed a,html.theme--documenter-dark .hero.is-success .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-success .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-success .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-success .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-success .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#008438}html.theme--documenter-dark .hero.is-success.is-bold{background-image:linear-gradient(141deg, #005115 0%, #008438 71%, #009e5d 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #005115 0%, #008438 71%, #009e5d 100%)}}html.theme--documenter-dark .hero.is-warning{background-color:#ad8100;color:#fff}html.theme--documenter-dark .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-warning strong{color:inherit}html.theme--documenter-dark .hero.is-warning .title{color:#fff}html.theme--documenter-dark .hero.is-warning .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-warning .subtitle a:not(.button),html.theme--documenter-dark .hero.is-warning .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-warning .navbar-menu{background-color:#ad8100}}html.theme--documenter-dark .hero.is-warning .navbar-item,html.theme--documenter-dark .hero.is-warning .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-warning a.navbar-item:hover,html.theme--documenter-dark .hero.is-warning a.navbar-item.is-active,html.theme--documenter-dark .hero.is-warning .navbar-link:hover,html.theme--documenter-dark .hero.is-warning .navbar-link.is-active{background-color:#946e00;color:#fff}html.theme--documenter-dark .hero.is-warning .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-warning .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-warning .tabs li.is-active a{color:#ad8100 !important;opacity:1}html.theme--documenter-dark .hero.is-warning .tabs.is-boxed a,html.theme--documenter-dark .hero.is-warning .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-warning .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-warning .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-warning .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-warning .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#ad8100}html.theme--documenter-dark .hero.is-warning.is-bold{background-image:linear-gradient(141deg, #7a4700 0%, #ad8100 71%, #c7b500 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #7a4700 0%, #ad8100 71%, #c7b500 100%)}}html.theme--documenter-dark .hero.is-danger{background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),html.theme--documenter-dark .hero.is-danger strong{color:inherit}html.theme--documenter-dark .hero.is-danger .title{color:#fff}html.theme--documenter-dark .hero.is-danger .subtitle{color:rgba(255,255,255,0.9)}html.theme--documenter-dark .hero.is-danger .subtitle a:not(.button),html.theme--documenter-dark .hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1055px){html.theme--documenter-dark .hero.is-danger .navbar-menu{background-color:#9e1b0d}}html.theme--documenter-dark .hero.is-danger .navbar-item,html.theme--documenter-dark .hero.is-danger .navbar-link{color:rgba(255,255,255,0.7)}html.theme--documenter-dark .hero.is-danger a.navbar-item:hover,html.theme--documenter-dark .hero.is-danger a.navbar-item.is-active,html.theme--documenter-dark .hero.is-danger .navbar-link:hover,html.theme--documenter-dark .hero.is-danger .navbar-link.is-active{background-color:#86170b;color:#fff}html.theme--documenter-dark .hero.is-danger .tabs a{color:#fff;opacity:0.9}html.theme--documenter-dark .hero.is-danger .tabs a:hover{opacity:1}html.theme--documenter-dark .hero.is-danger .tabs li.is-active a{color:#9e1b0d !important;opacity:1}html.theme--documenter-dark .hero.is-danger .tabs.is-boxed a,html.theme--documenter-dark .hero.is-danger .tabs.is-toggle a{color:#fff}html.theme--documenter-dark .hero.is-danger .tabs.is-boxed a:hover,html.theme--documenter-dark .hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}html.theme--documenter-dark .hero.is-danger .tabs.is-boxed li.is-active a,html.theme--documenter-dark .hero.is-danger .tabs.is-boxed li.is-active a:hover,html.theme--documenter-dark .hero.is-danger .tabs.is-toggle li.is-active a,html.theme--documenter-dark .hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#9e1b0d}html.theme--documenter-dark .hero.is-danger.is-bold{background-image:linear-gradient(141deg, #75030b 0%, #9e1b0d 71%, #ba380a 100%)}@media screen and (max-width: 768px){html.theme--documenter-dark .hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #75030b 0%, #9e1b0d 71%, #ba380a 100%)}}html.theme--documenter-dark .hero.is-small .hero-body,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.hero .hero-body{padding:1.5rem}@media screen and (min-width: 769px),print{html.theme--documenter-dark .hero.is-medium .hero-body{padding:9rem 4.5rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .hero.is-large .hero-body{padding:18rem 6rem}}html.theme--documenter-dark .hero.is-halfheight .hero-body,html.theme--documenter-dark .hero.is-fullheight .hero-body,html.theme--documenter-dark .hero.is-fullheight-with-navbar .hero-body{align-items:center;display:flex}html.theme--documenter-dark .hero.is-halfheight .hero-body>.container,html.theme--documenter-dark .hero.is-fullheight .hero-body>.container,html.theme--documenter-dark .hero.is-fullheight-with-navbar .hero-body>.container{flex-grow:1;flex-shrink:1}html.theme--documenter-dark .hero.is-halfheight{min-height:50vh}html.theme--documenter-dark .hero.is-fullheight{min-height:100vh}html.theme--documenter-dark .hero-video{overflow:hidden}html.theme--documenter-dark .hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%, -50%, 0)}html.theme--documenter-dark .hero-video.is-transparent{opacity:0.3}@media screen and (max-width: 768px){html.theme--documenter-dark .hero-video{display:none}}html.theme--documenter-dark .hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){html.theme--documenter-dark .hero-buttons .button{display:flex}html.theme--documenter-dark .hero-buttons .button:not(:last-child){margin-bottom:0.75rem}}@media screen and (min-width: 769px),print{html.theme--documenter-dark .hero-buttons{display:flex;justify-content:center}html.theme--documenter-dark .hero-buttons .button:not(:last-child){margin-right:1.5rem}}html.theme--documenter-dark .hero-head,html.theme--documenter-dark .hero-foot{flex-grow:0;flex-shrink:0}html.theme--documenter-dark .hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}@media screen and (min-width: 769px),print{html.theme--documenter-dark .hero-body{padding:3rem 3rem}}html.theme--documenter-dark .section{padding:3rem 1.5rem}@media screen and (min-width: 1056px){html.theme--documenter-dark .section{padding:3rem 3rem}html.theme--documenter-dark .section.is-medium{padding:9rem 4.5rem}html.theme--documenter-dark .section.is-large{padding:18rem 6rem}}html.theme--documenter-dark .footer{background-color:#282f2f;padding:3rem 1.5rem 6rem}html.theme--documenter-dark hr{height:1px}html.theme--documenter-dark h6{text-transform:uppercase;letter-spacing:0.5px}html.theme--documenter-dark .hero{background-color:#343c3d}html.theme--documenter-dark a{transition:all 200ms ease}html.theme--documenter-dark .button{transition:all 200ms ease;border-width:1px;color:#fff}html.theme--documenter-dark .button.is-active,html.theme--documenter-dark .button.is-focused,html.theme--documenter-dark .button:active,html.theme--documenter-dark .button:focus{box-shadow:0 0 0 2px rgba(140,155,157,0.5)}html.theme--documenter-dark .button.is-white.is-hovered,html.theme--documenter-dark .button.is-white:hover{background-color:#fff}html.theme--documenter-dark .button.is-white.is-active,html.theme--documenter-dark .button.is-white.is-focused,html.theme--documenter-dark .button.is-white:active,html.theme--documenter-dark .button.is-white:focus{border-color:#fff;box-shadow:0 0 0 2px rgba(255,255,255,0.5)}html.theme--documenter-dark .button.is-black.is-hovered,html.theme--documenter-dark .button.is-black:hover{background-color:#1d1d1d}html.theme--documenter-dark .button.is-black.is-active,html.theme--documenter-dark .button.is-black.is-focused,html.theme--documenter-dark .button.is-black:active,html.theme--documenter-dark .button.is-black:focus{border-color:#0a0a0a;box-shadow:0 0 0 2px rgba(10,10,10,0.5)}html.theme--documenter-dark .button.is-light.is-hovered,html.theme--documenter-dark .button.is-light:hover{background-color:#fff}html.theme--documenter-dark .button.is-light.is-active,html.theme--documenter-dark .button.is-light.is-focused,html.theme--documenter-dark .button.is-light:active,html.theme--documenter-dark .button.is-light:focus{border-color:#ecf0f1;box-shadow:0 0 0 2px rgba(236,240,241,0.5)}html.theme--documenter-dark .button.is-dark.is-hovered,html.theme--documenter-dark .content kbd.button.is-hovered,html.theme--documenter-dark .button.is-dark:hover,html.theme--documenter-dark .content kbd.button:hover{background-color:#3a4344}html.theme--documenter-dark .button.is-dark.is-active,html.theme--documenter-dark .content kbd.button.is-active,html.theme--documenter-dark .button.is-dark.is-focused,html.theme--documenter-dark .content kbd.button.is-focused,html.theme--documenter-dark .button.is-dark:active,html.theme--documenter-dark .content kbd.button:active,html.theme--documenter-dark .button.is-dark:focus,html.theme--documenter-dark .content kbd.button:focus{border-color:#282f2f;box-shadow:0 0 0 2px rgba(40,47,47,0.5)}html.theme--documenter-dark .button.is-primary.is-hovered,html.theme--documenter-dark .docstring>section>a.button.is-hovered.docs-sourcelink,html.theme--documenter-dark .button.is-primary:hover,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:hover{background-color:#436d9a}html.theme--documenter-dark .button.is-primary.is-active,html.theme--documenter-dark .docstring>section>a.button.is-active.docs-sourcelink,html.theme--documenter-dark .button.is-primary.is-focused,html.theme--documenter-dark .docstring>section>a.button.is-focused.docs-sourcelink,html.theme--documenter-dark .button.is-primary:active,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:active,html.theme--documenter-dark .button.is-primary:focus,html.theme--documenter-dark .docstring>section>a.button.docs-sourcelink:focus{border-color:#375a7f;box-shadow:0 0 0 2px rgba(55,90,127,0.5)}html.theme--documenter-dark .button.is-link.is-hovered,html.theme--documenter-dark .button.is-link:hover{background-color:#1fdeb8}html.theme--documenter-dark .button.is-link.is-active,html.theme--documenter-dark .button.is-link.is-focused,html.theme--documenter-dark .button.is-link:active,html.theme--documenter-dark .button.is-link:focus{border-color:#1abc9c;box-shadow:0 0 0 2px rgba(26,188,156,0.5)}html.theme--documenter-dark .button.is-info.is-hovered,html.theme--documenter-dark .button.is-info:hover{background-color:#0363a3}html.theme--documenter-dark .button.is-info.is-active,html.theme--documenter-dark .button.is-info.is-focused,html.theme--documenter-dark .button.is-info:active,html.theme--documenter-dark .button.is-info:focus{border-color:#024c7d;box-shadow:0 0 0 2px rgba(2,76,125,0.5)}html.theme--documenter-dark .button.is-success.is-hovered,html.theme--documenter-dark .button.is-success:hover{background-color:#00aa48}html.theme--documenter-dark .button.is-success.is-active,html.theme--documenter-dark .button.is-success.is-focused,html.theme--documenter-dark .button.is-success:active,html.theme--documenter-dark .button.is-success:focus{border-color:#008438;box-shadow:0 0 0 2px rgba(0,132,56,0.5)}html.theme--documenter-dark .button.is-warning.is-hovered,html.theme--documenter-dark .button.is-warning:hover{background-color:#d39e00}html.theme--documenter-dark .button.is-warning.is-active,html.theme--documenter-dark .button.is-warning.is-focused,html.theme--documenter-dark .button.is-warning:active,html.theme--documenter-dark .button.is-warning:focus{border-color:#ad8100;box-shadow:0 0 0 2px rgba(173,129,0,0.5)}html.theme--documenter-dark .button.is-danger.is-hovered,html.theme--documenter-dark .button.is-danger:hover{background-color:#c12110}html.theme--documenter-dark .button.is-danger.is-active,html.theme--documenter-dark .button.is-danger.is-focused,html.theme--documenter-dark .button.is-danger:active,html.theme--documenter-dark .button.is-danger:focus{border-color:#9e1b0d;box-shadow:0 0 0 2px rgba(158,27,13,0.5)}html.theme--documenter-dark .label{color:#dbdee0}html.theme--documenter-dark .button,html.theme--documenter-dark .control.has-icons-left .icon,html.theme--documenter-dark .control.has-icons-right .icon,html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark .pagination-ellipsis,html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-previous,html.theme--documenter-dark .select,html.theme--documenter-dark .select select,html.theme--documenter-dark .textarea{height:2.5em}html.theme--documenter-dark .input,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark .textarea{transition:all 200ms ease;box-shadow:none;border-width:1px;padding-left:1em;padding-right:1em}html.theme--documenter-dark .select:after,html.theme--documenter-dark .select select{border-width:1px}html.theme--documenter-dark .control.has-addons .button,html.theme--documenter-dark .control.has-addons .input,html.theme--documenter-dark .control.has-addons #documenter .docs-sidebar form.docs-search>input,html.theme--documenter-dark #documenter .docs-sidebar .control.has-addons form.docs-search>input,html.theme--documenter-dark .control.has-addons .select{margin-right:-1px}html.theme--documenter-dark .notification{background-color:#343c3d}html.theme--documenter-dark .card{box-shadow:none;border:1px solid #343c3d;background-color:#282f2f;border-radius:.4em}html.theme--documenter-dark .card .card-image img{border-radius:.4em .4em 0 0}html.theme--documenter-dark .card .card-header{box-shadow:none;background-color:rgba(18,18,18,0.2);border-radius:.4em .4em 0 0}html.theme--documenter-dark .card .card-footer{background-color:rgba(18,18,18,0.2)}html.theme--documenter-dark .card .card-footer,html.theme--documenter-dark .card .card-footer-item{border-width:1px;border-color:#343c3d}html.theme--documenter-dark .notification.is-white a:not(.button){color:#0a0a0a;text-decoration:underline}html.theme--documenter-dark .notification.is-black a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-light a:not(.button){color:rgba(0,0,0,0.7);text-decoration:underline}html.theme--documenter-dark .notification.is-dark a:not(.button),html.theme--documenter-dark .content kbd.notification a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-primary a:not(.button),html.theme--documenter-dark .docstring>section>a.notification.docs-sourcelink a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-link a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-info a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-success a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-warning a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .notification.is-danger a:not(.button){color:#fff;text-decoration:underline}html.theme--documenter-dark .tag,html.theme--documenter-dark .content kbd,html.theme--documenter-dark .docstring>section>a.docs-sourcelink{border-radius:.4em}html.theme--documenter-dark .menu-list a{transition:all 300ms ease}html.theme--documenter-dark .modal-card-body{background-color:#282f2f}html.theme--documenter-dark .modal-card-foot,html.theme--documenter-dark .modal-card-head{border-color:#343c3d}html.theme--documenter-dark .message-header{font-weight:700;background-color:#343c3d;color:#fff}html.theme--documenter-dark .message-body{border-width:1px;border-color:#343c3d}html.theme--documenter-dark .navbar{border-radius:.4em}html.theme--documenter-dark .navbar.is-transparent{background:none}html.theme--documenter-dark .navbar.is-primary .navbar-dropdown a.navbar-item.is-active,html.theme--documenter-dark .docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#1abc9c}@media screen and (max-width: 1055px){html.theme--documenter-dark .navbar .navbar-menu{background-color:#375a7f;border-radius:0 0 .4em .4em}}html.theme--documenter-dark .hero .navbar,html.theme--documenter-dark body>.navbar{border-radius:0}html.theme--documenter-dark .pagination-link,html.theme--documenter-dark .pagination-next,html.theme--documenter-dark .pagination-previous{border-width:1px}html.theme--documenter-dark .panel-block,html.theme--documenter-dark .panel-heading,html.theme--documenter-dark .panel-tabs{border-width:1px}html.theme--documenter-dark .panel-block:first-child,html.theme--documenter-dark .panel-heading:first-child,html.theme--documenter-dark .panel-tabs:first-child{border-top-width:1px}html.theme--documenter-dark .panel-heading{font-weight:700}html.theme--documenter-dark .panel-tabs a{border-width:1px;margin-bottom:-1px}html.theme--documenter-dark .panel-tabs a.is-active{border-bottom-color:#17a689}html.theme--documenter-dark .panel-block:hover{color:#1dd2af}html.theme--documenter-dark .panel-block:hover .panel-icon{color:#1dd2af}html.theme--documenter-dark .panel-block.is-active .panel-icon{color:#17a689}html.theme--documenter-dark .tabs a{border-bottom-width:1px;margin-bottom:-1px}html.theme--documenter-dark .tabs ul{border-bottom-width:1px}html.theme--documenter-dark .tabs.is-boxed a{border-width:1px}html.theme--documenter-dark .tabs.is-boxed li.is-active a{background-color:#1f2424}html.theme--documenter-dark .tabs.is-toggle li a{border-width:1px;margin-bottom:0}html.theme--documenter-dark .tabs.is-toggle li+li{margin-left:-1px}html.theme--documenter-dark .hero.is-white .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-black .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-light .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-dark .navbar .navbar-dropdown .navbar-item:hover,html.theme--documenter-dark .content kbd.hero .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-primary .navbar .navbar-dropdown .navbar-item:hover,html.theme--documenter-dark .docstring>section>a.hero.docs-sourcelink .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-link .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-info .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-success .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-warning .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark .hero.is-danger .navbar .navbar-dropdown .navbar-item:hover{background-color:rgba(0,0,0,0)}html.theme--documenter-dark h1 .docs-heading-anchor,html.theme--documenter-dark h1 .docs-heading-anchor:hover,html.theme--documenter-dark h1 .docs-heading-anchor:visited,html.theme--documenter-dark h2 .docs-heading-anchor,html.theme--documenter-dark h2 .docs-heading-anchor:hover,html.theme--documenter-dark h2 .docs-heading-anchor:visited,html.theme--documenter-dark h3 .docs-heading-anchor,html.theme--documenter-dark h3 .docs-heading-anchor:hover,html.theme--documenter-dark h3 .docs-heading-anchor:visited,html.theme--documenter-dark h4 .docs-heading-anchor,html.theme--documenter-dark h4 .docs-heading-anchor:hover,html.theme--documenter-dark h4 .docs-heading-anchor:visited,html.theme--documenter-dark h5 .docs-heading-anchor,html.theme--documenter-dark h5 .docs-heading-anchor:hover,html.theme--documenter-dark h5 .docs-heading-anchor:visited,html.theme--documenter-dark h6 .docs-heading-anchor,html.theme--documenter-dark h6 .docs-heading-anchor:hover,html.theme--documenter-dark h6 .docs-heading-anchor:visited{color:#f2f2f2}html.theme--documenter-dark h1 .docs-heading-anchor-permalink,html.theme--documenter-dark h2 .docs-heading-anchor-permalink,html.theme--documenter-dark h3 .docs-heading-anchor-permalink,html.theme--documenter-dark h4 .docs-heading-anchor-permalink,html.theme--documenter-dark h5 .docs-heading-anchor-permalink,html.theme--documenter-dark h6 .docs-heading-anchor-permalink{visibility:hidden;vertical-align:middle;margin-left:0.5em;font-size:0.7rem}html.theme--documenter-dark h1 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h2 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h3 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h4 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h5 .docs-heading-anchor-permalink::before,html.theme--documenter-dark h6 .docs-heading-anchor-permalink::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f0c1"}html.theme--documenter-dark h1:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h2:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h3:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h4:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h5:hover .docs-heading-anchor-permalink,html.theme--documenter-dark h6:hover .docs-heading-anchor-permalink{visibility:visible}html.theme--documenter-dark .docs-light-only{display:none !important}html.theme--documenter-dark pre{position:relative;overflow:hidden}html.theme--documenter-dark pre code,html.theme--documenter-dark pre code.hljs{padding:0 .75rem !important;overflow:auto;display:block}html.theme--documenter-dark pre code:first-of-type,html.theme--documenter-dark pre code.hljs:first-of-type{padding-top:0.5rem !important}html.theme--documenter-dark pre code:last-of-type,html.theme--documenter-dark pre code.hljs:last-of-type{padding-bottom:0.5rem !important}html.theme--documenter-dark pre .copy-button{opacity:0.2;transition:opacity 0.2s;position:absolute;right:0em;top:0em;padding:0.5em;width:2.5em;height:2.5em;background:transparent;border:none;font-family:"Font Awesome 6 Free";color:#fff;cursor:pointer;text-align:center}html.theme--documenter-dark pre .copy-button:focus,html.theme--documenter-dark pre .copy-button:hover{opacity:1;background:rgba(255,255,255,0.1);color:#1abc9c}html.theme--documenter-dark pre .copy-button.success{color:#259a12;opacity:1}html.theme--documenter-dark pre .copy-button.error{color:#cb3c33;opacity:1}html.theme--documenter-dark pre:hover .copy-button{opacity:1}html.theme--documenter-dark .admonition{background-color:#282f2f;border-style:solid;border-width:1px;border-color:#5e6d6f;border-radius:.4em;font-size:1rem}html.theme--documenter-dark .admonition strong{color:currentColor}html.theme--documenter-dark .admonition.is-small,html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input.admonition{font-size:.75rem}html.theme--documenter-dark .admonition.is-medium{font-size:1.25rem}html.theme--documenter-dark .admonition.is-large{font-size:1.5rem}html.theme--documenter-dark .admonition.is-default{background-color:#282f2f;border-color:#5e6d6f}html.theme--documenter-dark .admonition.is-default>.admonition-header{background-color:#5e6d6f;color:#fff}html.theme--documenter-dark .admonition.is-default>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-info{background-color:#282f2f;border-color:#024c7d}html.theme--documenter-dark .admonition.is-info>.admonition-header{background-color:#024c7d;color:#fff}html.theme--documenter-dark .admonition.is-info>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-success{background-color:#282f2f;border-color:#008438}html.theme--documenter-dark .admonition.is-success>.admonition-header{background-color:#008438;color:#fff}html.theme--documenter-dark .admonition.is-success>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-warning{background-color:#282f2f;border-color:#ad8100}html.theme--documenter-dark .admonition.is-warning>.admonition-header{background-color:#ad8100;color:#fff}html.theme--documenter-dark .admonition.is-warning>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-danger{background-color:#282f2f;border-color:#9e1b0d}html.theme--documenter-dark .admonition.is-danger>.admonition-header{background-color:#9e1b0d;color:#fff}html.theme--documenter-dark .admonition.is-danger>.admonition-body{color:#fff}html.theme--documenter-dark .admonition.is-compat{background-color:#282f2f;border-color:#137886}html.theme--documenter-dark .admonition.is-compat>.admonition-header{background-color:#137886;color:#fff}html.theme--documenter-dark .admonition.is-compat>.admonition-body{color:#fff}html.theme--documenter-dark .admonition-header{color:#fff;background-color:#5e6d6f;align-items:center;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.5rem .75rem;position:relative}html.theme--documenter-dark .admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;margin-right:.75rem;content:"\f06a"}html.theme--documenter-dark details.admonition.is-details>.admonition-header{list-style:none}html.theme--documenter-dark details.admonition.is-details>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f055"}html.theme--documenter-dark details.admonition.is-details[open]>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f056"}html.theme--documenter-dark .admonition-body{color:#fff;padding:0.5rem .75rem}html.theme--documenter-dark .admonition-body pre{background-color:#282f2f}html.theme--documenter-dark .admonition-body code{background-color:rgba(255,255,255,0.05)}html.theme--documenter-dark .docstring{margin-bottom:1em;background-color:rgba(0,0,0,0);border:1px solid #5e6d6f;box-shadow:none;max-width:100%}html.theme--documenter-dark .docstring>header{cursor:pointer;display:flex;flex-grow:1;align-items:stretch;padding:0.5rem .75rem;background-color:#282f2f;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);box-shadow:none;border-bottom:1px solid #5e6d6f}html.theme--documenter-dark .docstring>header code{background-color:transparent}html.theme--documenter-dark .docstring>header .docstring-article-toggle-button{min-width:1.1rem;padding:0.2rem 0.2rem 0.2rem 0}html.theme--documenter-dark .docstring>header .docstring-binding{margin-right:0.3em}html.theme--documenter-dark .docstring>header .docstring-category{margin-left:0.3em}html.theme--documenter-dark .docstring>section{position:relative;padding:.75rem .75rem;border-bottom:1px solid #5e6d6f}html.theme--documenter-dark .docstring>section:last-child{border-bottom:none}html.theme--documenter-dark .docstring>section>a.docs-sourcelink{transition:opacity 0.3s;opacity:0;position:absolute;right:.375rem;bottom:.375rem}html.theme--documenter-dark .docstring>section>a.docs-sourcelink:focus{opacity:1 !important}html.theme--documenter-dark .docstring:hover>section>a.docs-sourcelink{opacity:0.2}html.theme--documenter-dark .docstring:focus-within>section>a.docs-sourcelink{opacity:0.2}html.theme--documenter-dark .docstring>section:hover a.docs-sourcelink{opacity:1}html.theme--documenter-dark .documenter-example-output{background-color:#1f2424}html.theme--documenter-dark .outdated-warning-overlay{position:fixed;top:0;left:0;right:0;box-shadow:0 0 10px rgba(0,0,0,0.3);z-index:999;background-color:#282f2f;color:#fff;border-bottom:3px solid #9e1b0d;padding:10px 35px;text-align:center;font-size:15px}html.theme--documenter-dark .outdated-warning-overlay .outdated-warning-closer{position:absolute;top:calc(50% - 10px);right:18px;cursor:pointer;width:12px}html.theme--documenter-dark .outdated-warning-overlay a{color:#1abc9c}html.theme--documenter-dark .outdated-warning-overlay a:hover{color:#1dd2af}html.theme--documenter-dark .content pre{border:1px solid #5e6d6f}html.theme--documenter-dark .content code{font-weight:inherit}html.theme--documenter-dark .content a code{color:#1abc9c}html.theme--documenter-dark .content h1 code,html.theme--documenter-dark .content h2 code,html.theme--documenter-dark .content h3 code,html.theme--documenter-dark .content h4 code,html.theme--documenter-dark .content h5 code,html.theme--documenter-dark .content h6 code{color:#f2f2f2}html.theme--documenter-dark .content table{display:block;width:initial;max-width:100%;overflow-x:auto}html.theme--documenter-dark .content blockquote>ul:first-child,html.theme--documenter-dark .content blockquote>ol:first-child,html.theme--documenter-dark .content .admonition-body>ul:first-child,html.theme--documenter-dark .content .admonition-body>ol:first-child{margin-top:0}html.theme--documenter-dark pre,html.theme--documenter-dark code{font-variant-ligatures:no-contextual}html.theme--documenter-dark .breadcrumb a.is-disabled{cursor:default;pointer-events:none}html.theme--documenter-dark .breadcrumb a.is-disabled,html.theme--documenter-dark .breadcrumb a.is-disabled:hover{color:#f2f2f2}html.theme--documenter-dark .hljs{background:initial !important}html.theme--documenter-dark .katex .katex-mathml{top:0;right:0}html.theme--documenter-dark .katex-display,html.theme--documenter-dark mjx-container,html.theme--documenter-dark .MathJax_Display{margin:0.5em 0 !important}html.theme--documenter-dark html{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto}html.theme--documenter-dark li.no-marker{list-style:none}html.theme--documenter-dark #documenter .docs-main>article{overflow-wrap:break-word}html.theme--documenter-dark #documenter .docs-main>article .math-container{overflow-x:auto;overflow-y:hidden}@media screen and (min-width: 1056px){html.theme--documenter-dark #documenter .docs-main{max-width:52rem;margin-left:20rem;padding-right:1rem}}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-main{width:100%}html.theme--documenter-dark #documenter .docs-main>article{max-width:52rem;margin-left:auto;margin-right:auto;margin-bottom:1rem;padding:0 1rem}html.theme--documenter-dark #documenter .docs-main>header,html.theme--documenter-dark #documenter .docs-main>nav{max-width:100%;width:100%;margin:0}}html.theme--documenter-dark #documenter .docs-main header.docs-navbar{background-color:#1f2424;border-bottom:1px solid #5e6d6f;z-index:2;min-height:4rem;margin-bottom:1rem;display:flex}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .breadcrumb{flex-grow:1}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-sidebar-button{display:block;font-size:1.5rem;padding-bottom:0.1rem;margin-right:1rem}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right{display:flex;white-space:nowrap;gap:1rem;align-items:center}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-icon,html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-label{display:inline-block}html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-label{padding:0;margin-left:0.3em}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-navbar-link{margin-left:0.4rem;margin-right:0.4rem}}html.theme--documenter-dark #documenter .docs-main header.docs-navbar>*{margin:auto 0}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-main header.docs-navbar{position:sticky;top:0;padding:0 1rem;transition-property:top, box-shadow;-webkit-transition-property:top, box-shadow;transition-duration:0.3s;-webkit-transition-duration:0.3s}html.theme--documenter-dark #documenter .docs-main header.docs-navbar.headroom--not-top{box-shadow:.2rem 0rem .4rem #171717;transition-duration:0.7s;-webkit-transition-duration:0.7s}html.theme--documenter-dark #documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom{top:-4.5rem;transition-duration:0.7s;-webkit-transition-duration:0.7s}}html.theme--documenter-dark #documenter .docs-main section.footnotes{border-top:1px solid #5e6d6f}html.theme--documenter-dark #documenter .docs-main section.footnotes li .tag:first-child,html.theme--documenter-dark #documenter .docs-main section.footnotes li .docstring>section>a.docs-sourcelink:first-child,html.theme--documenter-dark #documenter .docs-main section.footnotes li .content kbd:first-child,html.theme--documenter-dark .content #documenter .docs-main section.footnotes li kbd:first-child{margin-right:1em;margin-bottom:0.4em}html.theme--documenter-dark #documenter .docs-main .docs-footer{display:flex;flex-wrap:wrap;margin-left:0;margin-right:0;border-top:1px solid #5e6d6f;padding-top:1rem;padding-bottom:1rem}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-main .docs-footer{padding-left:1rem;padding-right:1rem}}html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-nextpage,html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-prevpage{flex-grow:1}html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-nextpage{text-align:right}html.theme--documenter-dark #documenter .docs-main .docs-footer .flexbox-break{flex-basis:100%;height:0}html.theme--documenter-dark #documenter .docs-main .docs-footer .footer-message{font-size:0.8em;margin:0.5em auto 0 auto;text-align:center}html.theme--documenter-dark #documenter .docs-sidebar{display:flex;flex-direction:column;color:#fff;background-color:#282f2f;border-right:1px solid #5e6d6f;padding:0;flex:0 0 18rem;z-index:5;font-size:1rem;position:fixed;left:-18rem;width:18rem;height:100%;transition:left 0.3s}html.theme--documenter-dark #documenter .docs-sidebar.visible{left:0;box-shadow:.4rem 0rem .8rem #171717}@media screen and (min-width: 1056px){html.theme--documenter-dark #documenter .docs-sidebar.visible{box-shadow:none}}@media screen and (min-width: 1056px){html.theme--documenter-dark #documenter .docs-sidebar{left:0;top:0}}html.theme--documenter-dark #documenter .docs-sidebar .docs-logo{margin-top:1rem;padding:0 1rem}html.theme--documenter-dark #documenter .docs-sidebar .docs-logo>img{max-height:6rem;margin:auto}html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name{flex-shrink:0;font-size:1.5rem;font-weight:700;text-align:center;white-space:nowrap;overflow:hidden;padding:0.5rem 0}html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name .docs-autofit{max-width:16.2rem}html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name a,html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name a:hover{color:#fff}html.theme--documenter-dark #documenter .docs-sidebar .docs-version-selector{border-top:1px solid #5e6d6f;display:none;padding:0.5rem}html.theme--documenter-dark #documenter .docs-sidebar .docs-version-selector.visible{display:flex}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu{flex-grow:1;user-select:none;border-top:1px solid #5e6d6f;padding-bottom:1.5rem}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu>li>.tocitem{font-weight:bold}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu>li li{font-size:.95rem;margin-left:1em;border-left:1px solid #5e6d6f}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input.collapse-toggle{display:none}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.collapsed{display:none}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input:checked~ul.collapsed{display:block}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem{display:flex}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label{flex-grow:2}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron{display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;font-size:.75rem;margin-left:1rem;margin-top:auto;margin-bottom:auto}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f054"}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input:checked~label.tocitem .docs-chevron::before{content:"\f078"}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem{display:block;padding:0.5rem 0.5rem}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem,html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem:hover{color:#fff;background:#282f2f}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu a.tocitem:hover,html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem:hover{color:#fff;background-color:#32393a}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active{border-top:1px solid #5e6d6f;border-bottom:1px solid #5e6d6f;background-color:#1f2424}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem,html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover{background-color:#1f2424;color:#fff}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover{background-color:#32393a;color:#fff}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu>li.is-active:first-child{border-top:none}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal{margin:0 0.5rem 0.5rem;border-top:1px solid #5e6d6f}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal li{font-size:.85rem;border-left:none;margin-left:0;margin-top:0.5rem}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem{width:100%;padding:0}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before{content:"⚬";margin-right:0.4em}html.theme--documenter-dark #documenter .docs-sidebar form.docs-search{margin:auto;margin-top:0.5rem;margin-bottom:0.5rem}html.theme--documenter-dark #documenter .docs-sidebar form.docs-search>input{width:14.4rem}html.theme--documenter-dark #documenter .docs-sidebar #documenter-search-query{color:#868c98;width:14.4rem;box-shadow:inset 0 1px 2px rgba(10,10,10,0.1)}@media screen and (min-width: 1056px){html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar{width:.3rem;background:none}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#3b4445}html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover{background:#4e5a5c}}@media screen and (max-width: 1055px){html.theme--documenter-dark #documenter .docs-sidebar{overflow-y:auto;-webkit-overflow-scroll:touch}html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar{width:.3rem;background:none}html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#3b4445}html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar-thumb:hover{background:#4e5a5c}}html.theme--documenter-dark kbd.search-modal-key-hints{border-radius:0.25rem;border:1px solid rgba(245,245,245,0.6);box-shadow:0 2px 0 1px rgba(245,245,245,0.6);cursor:default;font-size:0.9rem;line-height:1.5;min-width:0.75rem;text-align:center;padding:0.1rem 0.3rem;position:relative;top:-1px}html.theme--documenter-dark .search-min-width-50{min-width:50%}html.theme--documenter-dark .search-min-height-100{min-height:100%}html.theme--documenter-dark .search-modal-card-body{max-height:calc(100vh - 15rem)}html.theme--documenter-dark .search-result-link{border-radius:0.7em;transition:all 300ms}html.theme--documenter-dark .search-result-link:hover,html.theme--documenter-dark .search-result-link:focus{background-color:rgba(0,128,128,0.1)}html.theme--documenter-dark .search-result-link .property-search-result-badge,html.theme--documenter-dark .search-result-link .search-filter{transition:all 300ms}html.theme--documenter-dark .property-search-result-badge,html.theme--documenter-dark .search-filter{padding:0.15em 0.5em;font-size:0.8em;font-style:italic;text-transform:none !important;line-height:1.5;color:#f5f5f5;background-color:rgba(51,65,85,0.501961);border-radius:0.6rem}html.theme--documenter-dark .search-result-link:hover .property-search-result-badge,html.theme--documenter-dark .search-result-link:hover .search-filter,html.theme--documenter-dark .search-result-link:focus .property-search-result-badge,html.theme--documenter-dark .search-result-link:focus .search-filter{color:#333;background-color:#f1f5f9}html.theme--documenter-dark .search-filter{color:#333;background-color:#f5f5f5;transition:all 300ms}html.theme--documenter-dark .search-filter:hover,html.theme--documenter-dark .search-filter:focus{color:#333}html.theme--documenter-dark .search-filter-selected{color:#f5f5f5;background-color:rgba(139,0,139,0.5)}html.theme--documenter-dark .search-filter-selected:hover,html.theme--documenter-dark .search-filter-selected:focus{color:#f5f5f5}html.theme--documenter-dark .search-result-highlight{background-color:#ffdd57;color:black}html.theme--documenter-dark .search-divider{border-bottom:1px solid #5e6d6f}html.theme--documenter-dark .search-result-title{width:85%;color:#f5f5f5}html.theme--documenter-dark .search-result-code-title{font-size:0.875rem;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}html.theme--documenter-dark #search-modal .modal-card-body::-webkit-scrollbar,html.theme--documenter-dark #search-modal .filter-tabs::-webkit-scrollbar{height:10px;width:10px;background-color:transparent}html.theme--documenter-dark #search-modal .modal-card-body::-webkit-scrollbar-thumb,html.theme--documenter-dark #search-modal .filter-tabs::-webkit-scrollbar-thumb{background-color:gray;border-radius:1rem}html.theme--documenter-dark #search-modal .modal-card-body::-webkit-scrollbar-track,html.theme--documenter-dark #search-modal .filter-tabs::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,0.6);background-color:transparent}html.theme--documenter-dark .w-100{width:100%}html.theme--documenter-dark .gap-2{gap:0.5rem}html.theme--documenter-dark .gap-4{gap:1rem}html.theme--documenter-dark .gap-8{gap:2rem}html.theme--documenter-dark{background-color:#1f2424;font-size:16px;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}html.theme--documenter-dark .ansi span.sgr1{font-weight:bolder}html.theme--documenter-dark .ansi span.sgr2{font-weight:lighter}html.theme--documenter-dark .ansi span.sgr3{font-style:italic}html.theme--documenter-dark .ansi span.sgr4{text-decoration:underline}html.theme--documenter-dark .ansi span.sgr7{color:#1f2424;background-color:#fff}html.theme--documenter-dark .ansi span.sgr8{color:transparent}html.theme--documenter-dark .ansi span.sgr8 span{color:transparent}html.theme--documenter-dark .ansi span.sgr9{text-decoration:line-through}html.theme--documenter-dark .ansi span.sgr30{color:#242424}html.theme--documenter-dark .ansi span.sgr31{color:#f6705f}html.theme--documenter-dark .ansi span.sgr32{color:#4fb43a}html.theme--documenter-dark .ansi span.sgr33{color:#f4c72f}html.theme--documenter-dark .ansi span.sgr34{color:#7587f0}html.theme--documenter-dark .ansi span.sgr35{color:#bc89d3}html.theme--documenter-dark .ansi span.sgr36{color:#49b6ca}html.theme--documenter-dark .ansi span.sgr37{color:#b3bdbe}html.theme--documenter-dark .ansi span.sgr40{background-color:#242424}html.theme--documenter-dark .ansi span.sgr41{background-color:#f6705f}html.theme--documenter-dark .ansi span.sgr42{background-color:#4fb43a}html.theme--documenter-dark .ansi span.sgr43{background-color:#f4c72f}html.theme--documenter-dark .ansi span.sgr44{background-color:#7587f0}html.theme--documenter-dark .ansi span.sgr45{background-color:#bc89d3}html.theme--documenter-dark .ansi span.sgr46{background-color:#49b6ca}html.theme--documenter-dark .ansi span.sgr47{background-color:#b3bdbe}html.theme--documenter-dark .ansi span.sgr90{color:#92a0a2}html.theme--documenter-dark .ansi span.sgr91{color:#ff8674}html.theme--documenter-dark .ansi span.sgr92{color:#79d462}html.theme--documenter-dark .ansi span.sgr93{color:#ffe76b}html.theme--documenter-dark .ansi span.sgr94{color:#8a98ff}html.theme--documenter-dark .ansi span.sgr95{color:#d2a4e6}html.theme--documenter-dark .ansi span.sgr96{color:#6bc8db}html.theme--documenter-dark .ansi span.sgr97{color:#ecf0f1}html.theme--documenter-dark .ansi span.sgr100{background-color:#92a0a2}html.theme--documenter-dark .ansi span.sgr101{background-color:#ff8674}html.theme--documenter-dark .ansi span.sgr102{background-color:#79d462}html.theme--documenter-dark .ansi span.sgr103{background-color:#ffe76b}html.theme--documenter-dark .ansi span.sgr104{background-color:#8a98ff}html.theme--documenter-dark .ansi span.sgr105{background-color:#d2a4e6}html.theme--documenter-dark .ansi span.sgr106{background-color:#6bc8db}html.theme--documenter-dark .ansi span.sgr107{background-color:#ecf0f1}html.theme--documenter-dark code.language-julia-repl>span.hljs-meta{color:#4fb43a;font-weight:bolder}html.theme--documenter-dark .hljs{background:#2b2b2b;color:#f8f8f2}html.theme--documenter-dark .hljs-comment,html.theme--documenter-dark .hljs-quote{color:#d4d0ab}html.theme--documenter-dark .hljs-variable,html.theme--documenter-dark .hljs-template-variable,html.theme--documenter-dark .hljs-tag,html.theme--documenter-dark .hljs-name,html.theme--documenter-dark .hljs-selector-id,html.theme--documenter-dark .hljs-selector-class,html.theme--documenter-dark .hljs-regexp,html.theme--documenter-dark .hljs-deletion{color:#ffa07a}html.theme--documenter-dark .hljs-number,html.theme--documenter-dark .hljs-built_in,html.theme--documenter-dark .hljs-literal,html.theme--documenter-dark .hljs-type,html.theme--documenter-dark .hljs-params,html.theme--documenter-dark .hljs-meta,html.theme--documenter-dark .hljs-link{color:#f5ab35}html.theme--documenter-dark .hljs-attribute{color:#ffd700}html.theme--documenter-dark .hljs-string,html.theme--documenter-dark .hljs-symbol,html.theme--documenter-dark .hljs-bullet,html.theme--documenter-dark .hljs-addition{color:#abe338}html.theme--documenter-dark .hljs-title,html.theme--documenter-dark .hljs-section{color:#00e0e0}html.theme--documenter-dark .hljs-keyword,html.theme--documenter-dark .hljs-selector-tag{color:#dcc6e0}html.theme--documenter-dark .hljs-emphasis{font-style:italic}html.theme--documenter-dark .hljs-strong{font-weight:bold}@media screen and (-ms-high-contrast: active){html.theme--documenter-dark .hljs-addition,html.theme--documenter-dark .hljs-attribute,html.theme--documenter-dark .hljs-built_in,html.theme--documenter-dark .hljs-bullet,html.theme--documenter-dark .hljs-comment,html.theme--documenter-dark .hljs-link,html.theme--documenter-dark .hljs-literal,html.theme--documenter-dark .hljs-meta,html.theme--documenter-dark .hljs-number,html.theme--documenter-dark .hljs-params,html.theme--documenter-dark .hljs-string,html.theme--documenter-dark .hljs-symbol,html.theme--documenter-dark .hljs-type,html.theme--documenter-dark .hljs-quote{color:highlight}html.theme--documenter-dark .hljs-keyword,html.theme--documenter-dark .hljs-selector-tag{font-weight:bold}}html.theme--documenter-dark .hljs-subst{color:#f8f8f2} diff --git a/v0.8.79/assets/themes/documenter-light.css b/v0.8.79/assets/themes/documenter-light.css new file mode 100644 index 0000000000..60a317a4c5 --- /dev/null +++ b/v0.8.79/assets/themes/documenter-light.css @@ -0,0 +1,9 @@ +.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis,.file-cta,.file-name,.select select,.textarea,.input,#documenter .docs-sidebar form.docs-search>input,.button{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:4px;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(0.5em - 1px);padding-left:calc(0.75em - 1px);padding-right:calc(0.75em - 1px);padding-top:calc(0.5em - 1px);position:relative;vertical-align:top}.pagination-previous:focus,.pagination-next:focus,.pagination-link:focus,.pagination-ellipsis:focus,.file-cta:focus,.file-name:focus,.select select:focus,.textarea:focus,.input:focus,#documenter .docs-sidebar form.docs-search>input:focus,.button:focus,.is-focused.pagination-previous,.is-focused.pagination-next,.is-focused.pagination-link,.is-focused.pagination-ellipsis,.is-focused.file-cta,.is-focused.file-name,.select select.is-focused,.is-focused.textarea,.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-focused.button,.pagination-previous:active,.pagination-next:active,.pagination-link:active,.pagination-ellipsis:active,.file-cta:active,.file-name:active,.select select:active,.textarea:active,.input:active,#documenter .docs-sidebar form.docs-search>input:active,.button:active,.is-active.pagination-previous,.is-active.pagination-next,.is-active.pagination-link,.is-active.pagination-ellipsis,.is-active.file-cta,.is-active.file-name,.select select.is-active,.is-active.textarea,.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active,.is-active.button{outline:none}.pagination-previous[disabled],.pagination-next[disabled],.pagination-link[disabled],.pagination-ellipsis[disabled],.file-cta[disabled],.file-name[disabled],.select select[disabled],.textarea[disabled],.input[disabled],#documenter .docs-sidebar form.docs-search>input[disabled],.button[disabled],fieldset[disabled] .pagination-previous,fieldset[disabled] .pagination-next,fieldset[disabled] .pagination-link,fieldset[disabled] .pagination-ellipsis,fieldset[disabled] .file-cta,fieldset[disabled] .file-name,fieldset[disabled] .select select,.select fieldset[disabled] select,fieldset[disabled] .textarea,fieldset[disabled] .input,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input,fieldset[disabled] .button{cursor:not-allowed}.tabs,.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis,.breadcrumb,.file,.button,.is-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.navbar-link:not(.is-arrowless)::after,.select:not(.is-multiple):not(.is-loading)::after{border:3px solid rgba(0,0,0,0);border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:0.625em;margin-top:-0.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:0.625em}.admonition:not(:last-child),.tabs:not(:last-child),.pagination:not(:last-child),.message:not(:last-child),.level:not(:last-child),.breadcrumb:not(:last-child),.block:not(:last-child),.title:not(:last-child),.subtitle:not(:last-child),.table-container:not(:last-child),.table:not(:last-child),.progress:not(:last-child),.notification:not(:last-child),.content:not(:last-child),.box:not(:last-child){margin-bottom:1.5rem}.modal-close,.delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,0.2);border:none;border-radius:9999px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:none;position:relative;vertical-align:top;width:20px}.modal-close::before,.delete::before,.modal-close::after,.delete::after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.modal-close::before,.delete::before{height:2px;width:50%}.modal-close::after,.delete::after{height:50%;width:2px}.modal-close:hover,.delete:hover,.modal-close:focus,.delete:focus{background-color:rgba(10,10,10,0.3)}.modal-close:active,.delete:active{background-color:rgba(10,10,10,0.4)}.is-small.modal-close,#documenter .docs-sidebar form.docs-search>input.modal-close,.is-small.delete,#documenter .docs-sidebar form.docs-search>input.delete{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}.is-medium.modal-close,.is-medium.delete{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}.is-large.modal-close,.is-large.delete{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}.control.is-loading::after,.select.is-loading::after,.loader,.button.is-loading::after{animation:spinAround 500ms infinite linear;border:2px solid #dbdbdb;border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}.hero-video,.modal-background,.modal,.image.is-square img,#documenter .docs-sidebar .docs-logo>img.is-square img,.image.is-square .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,.image.is-1by1 img,#documenter .docs-sidebar .docs-logo>img.is-1by1 img,.image.is-1by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,.image.is-5by4 img,#documenter .docs-sidebar .docs-logo>img.is-5by4 img,.image.is-5by4 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,.image.is-4by3 img,#documenter .docs-sidebar .docs-logo>img.is-4by3 img,.image.is-4by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,.image.is-3by2 img,#documenter .docs-sidebar .docs-logo>img.is-3by2 img,.image.is-3by2 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,.image.is-5by3 img,#documenter .docs-sidebar .docs-logo>img.is-5by3 img,.image.is-5by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,.image.is-16by9 img,#documenter .docs-sidebar .docs-logo>img.is-16by9 img,.image.is-16by9 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,.image.is-2by1 img,#documenter .docs-sidebar .docs-logo>img.is-2by1 img,.image.is-2by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,.image.is-3by1 img,#documenter .docs-sidebar .docs-logo>img.is-3by1 img,.image.is-3by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,.image.is-4by5 img,#documenter .docs-sidebar .docs-logo>img.is-4by5 img,.image.is-4by5 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,.image.is-3by4 img,#documenter .docs-sidebar .docs-logo>img.is-3by4 img,.image.is-3by4 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,.image.is-2by3 img,#documenter .docs-sidebar .docs-logo>img.is-2by3 img,.image.is-2by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,.image.is-3by5 img,#documenter .docs-sidebar .docs-logo>img.is-3by5 img,.image.is-3by5 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,.image.is-9by16 img,#documenter .docs-sidebar .docs-logo>img.is-9by16 img,.image.is-9by16 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,.image.is-1by2 img,#documenter .docs-sidebar .docs-logo>img.is-1by2 img,.image.is-1by2 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,.image.is-1by3 img,#documenter .docs-sidebar .docs-logo>img.is-1by3 img,.image.is-1by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio,.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}.navbar-burger{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0}.has-text-white{color:#fff !important}a.has-text-white:hover,a.has-text-white:focus{color:#e6e6e6 !important}.has-background-white{background-color:#fff !important}.has-text-black{color:#0a0a0a !important}a.has-text-black:hover,a.has-text-black:focus{color:#000 !important}.has-background-black{background-color:#0a0a0a !important}.has-text-light{color:#f5f5f5 !important}a.has-text-light:hover,a.has-text-light:focus{color:#dbdbdb !important}.has-background-light{background-color:#f5f5f5 !important}.has-text-dark{color:#363636 !important}a.has-text-dark:hover,a.has-text-dark:focus{color:#1c1c1c !important}.has-background-dark{background-color:#363636 !important}.has-text-primary{color:#4eb5de !important}a.has-text-primary:hover,a.has-text-primary:focus{color:#27a1d2 !important}.has-background-primary{background-color:#4eb5de !important}.has-text-primary-light{color:#eef8fc !important}a.has-text-primary-light:hover,a.has-text-primary-light:focus{color:#c3e6f4 !important}.has-background-primary-light{background-color:#eef8fc !important}.has-text-primary-dark{color:#1a6d8e !important}a.has-text-primary-dark:hover,a.has-text-primary-dark:focus{color:#228eb9 !important}.has-background-primary-dark{background-color:#1a6d8e !important}.has-text-link{color:#2e63b8 !important}a.has-text-link:hover,a.has-text-link:focus{color:#244d8f !important}.has-background-link{background-color:#2e63b8 !important}.has-text-link-light{color:#eff3fb !important}a.has-text-link-light:hover,a.has-text-link-light:focus{color:#c6d6f1 !important}.has-background-link-light{background-color:#eff3fb !important}.has-text-link-dark{color:#3169c4 !important}a.has-text-link-dark:hover,a.has-text-link-dark:focus{color:#5485d4 !important}.has-background-link-dark{background-color:#3169c4 !important}.has-text-info{color:#209cee !important}a.has-text-info:hover,a.has-text-info:focus{color:#1081cb !important}.has-background-info{background-color:#209cee !important}.has-text-info-light{color:#ecf7fe !important}a.has-text-info-light:hover,a.has-text-info-light:focus{color:#bde2fa !important}.has-background-info-light{background-color:#ecf7fe !important}.has-text-info-dark{color:#0e72b4 !important}a.has-text-info-dark:hover,a.has-text-info-dark:focus{color:#1190e3 !important}.has-background-info-dark{background-color:#0e72b4 !important}.has-text-success{color:#22c35b !important}a.has-text-success:hover,a.has-text-success:focus{color:#1a9847 !important}.has-background-success{background-color:#22c35b !important}.has-text-success-light{color:#eefcf3 !important}a.has-text-success-light:hover,a.has-text-success-light:focus{color:#c2f4d4 !important}.has-background-success-light{background-color:#eefcf3 !important}.has-text-success-dark{color:#198f43 !important}a.has-text-success-dark:hover,a.has-text-success-dark:focus{color:#21bb57 !important}.has-background-success-dark{background-color:#198f43 !important}.has-text-warning{color:#ffdd57 !important}a.has-text-warning:hover,a.has-text-warning:focus{color:#ffd324 !important}.has-background-warning{background-color:#ffdd57 !important}.has-text-warning-light{color:#fffbeb !important}a.has-text-warning-light:hover,a.has-text-warning-light:focus{color:#fff1b8 !important}.has-background-warning-light{background-color:#fffbeb !important}.has-text-warning-dark{color:#947600 !important}a.has-text-warning-dark:hover,a.has-text-warning-dark:focus{color:#c79f00 !important}.has-background-warning-dark{background-color:#947600 !important}.has-text-danger{color:#da0b00 !important}a.has-text-danger:hover,a.has-text-danger:focus{color:#a70800 !important}.has-background-danger{background-color:#da0b00 !important}.has-text-danger-light{color:#ffeceb !important}a.has-text-danger-light:hover,a.has-text-danger-light:focus{color:#ffbbb8 !important}.has-background-danger-light{background-color:#ffeceb !important}.has-text-danger-dark{color:#f50c00 !important}a.has-text-danger-dark:hover,a.has-text-danger-dark:focus{color:#ff3429 !important}.has-background-danger-dark{background-color:#f50c00 !important}.has-text-black-bis{color:#121212 !important}.has-background-black-bis{background-color:#121212 !important}.has-text-black-ter{color:#242424 !important}.has-background-black-ter{background-color:#242424 !important}.has-text-grey-darker{color:#363636 !important}.has-background-grey-darker{background-color:#363636 !important}.has-text-grey-dark{color:#4a4a4a !important}.has-background-grey-dark{background-color:#4a4a4a !important}.has-text-grey{color:#6b6b6b !important}.has-background-grey{background-color:#6b6b6b !important}.has-text-grey-light{color:#b5b5b5 !important}.has-background-grey-light{background-color:#b5b5b5 !important}.has-text-grey-lighter{color:#dbdbdb !important}.has-background-grey-lighter{background-color:#dbdbdb !important}.has-text-white-ter{color:#f5f5f5 !important}.has-background-white-ter{background-color:#f5f5f5 !important}.has-text-white-bis{color:#fafafa !important}.has-background-white-bis{background-color:#fafafa !important}.is-flex-direction-row{flex-direction:row !important}.is-flex-direction-row-reverse{flex-direction:row-reverse !important}.is-flex-direction-column{flex-direction:column !important}.is-flex-direction-column-reverse{flex-direction:column-reverse !important}.is-flex-wrap-nowrap{flex-wrap:nowrap !important}.is-flex-wrap-wrap{flex-wrap:wrap !important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse !important}.is-justify-content-flex-start{justify-content:flex-start !important}.is-justify-content-flex-end{justify-content:flex-end !important}.is-justify-content-center{justify-content:center !important}.is-justify-content-space-between{justify-content:space-between !important}.is-justify-content-space-around{justify-content:space-around !important}.is-justify-content-space-evenly{justify-content:space-evenly !important}.is-justify-content-start{justify-content:start !important}.is-justify-content-end{justify-content:end !important}.is-justify-content-left{justify-content:left !important}.is-justify-content-right{justify-content:right !important}.is-align-content-flex-start{align-content:flex-start !important}.is-align-content-flex-end{align-content:flex-end !important}.is-align-content-center{align-content:center !important}.is-align-content-space-between{align-content:space-between !important}.is-align-content-space-around{align-content:space-around !important}.is-align-content-space-evenly{align-content:space-evenly !important}.is-align-content-stretch{align-content:stretch !important}.is-align-content-start{align-content:start !important}.is-align-content-end{align-content:end !important}.is-align-content-baseline{align-content:baseline !important}.is-align-items-stretch{align-items:stretch !important}.is-align-items-flex-start{align-items:flex-start !important}.is-align-items-flex-end{align-items:flex-end !important}.is-align-items-center{align-items:center !important}.is-align-items-baseline{align-items:baseline !important}.is-align-items-start{align-items:start !important}.is-align-items-end{align-items:end !important}.is-align-items-self-start{align-items:self-start !important}.is-align-items-self-end{align-items:self-end !important}.is-align-self-auto{align-self:auto !important}.is-align-self-flex-start{align-self:flex-start !important}.is-align-self-flex-end{align-self:flex-end !important}.is-align-self-center{align-self:center !important}.is-align-self-baseline{align-self:baseline !important}.is-align-self-stretch{align-self:stretch !important}.is-flex-grow-0{flex-grow:0 !important}.is-flex-grow-1{flex-grow:1 !important}.is-flex-grow-2{flex-grow:2 !important}.is-flex-grow-3{flex-grow:3 !important}.is-flex-grow-4{flex-grow:4 !important}.is-flex-grow-5{flex-grow:5 !important}.is-flex-shrink-0{flex-shrink:0 !important}.is-flex-shrink-1{flex-shrink:1 !important}.is-flex-shrink-2{flex-shrink:2 !important}.is-flex-shrink-3{flex-shrink:3 !important}.is-flex-shrink-4{flex-shrink:4 !important}.is-flex-shrink-5{flex-shrink:5 !important}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left !important}.is-pulled-right{float:right !important}.is-radiusless{border-radius:0 !important}.is-shadowless{box-shadow:none !important}.is-clickable{cursor:pointer !important;pointer-events:all !important}.is-clipped{overflow:hidden !important}.is-relative{position:relative !important}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.m-0{margin:0 !important}.mt-0{margin-top:0 !important}.mr-0{margin-right:0 !important}.mb-0{margin-bottom:0 !important}.ml-0{margin-left:0 !important}.mx-0{margin-left:0 !important;margin-right:0 !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.m-1{margin:.25rem !important}.mt-1{margin-top:.25rem !important}.mr-1{margin-right:.25rem !important}.mb-1{margin-bottom:.25rem !important}.ml-1{margin-left:.25rem !important}.mx-1{margin-left:.25rem !important;margin-right:.25rem !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.m-2{margin:.5rem !important}.mt-2{margin-top:.5rem !important}.mr-2{margin-right:.5rem !important}.mb-2{margin-bottom:.5rem !important}.ml-2{margin-left:.5rem !important}.mx-2{margin-left:.5rem !important;margin-right:.5rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.m-3{margin:.75rem !important}.mt-3{margin-top:.75rem !important}.mr-3{margin-right:.75rem !important}.mb-3{margin-bottom:.75rem !important}.ml-3{margin-left:.75rem !important}.mx-3{margin-left:.75rem !important;margin-right:.75rem !important}.my-3{margin-top:.75rem !important;margin-bottom:.75rem !important}.m-4{margin:1rem !important}.mt-4{margin-top:1rem !important}.mr-4{margin-right:1rem !important}.mb-4{margin-bottom:1rem !important}.ml-4{margin-left:1rem !important}.mx-4{margin-left:1rem !important;margin-right:1rem !important}.my-4{margin-top:1rem !important;margin-bottom:1rem !important}.m-5{margin:1.5rem !important}.mt-5{margin-top:1.5rem !important}.mr-5{margin-right:1.5rem !important}.mb-5{margin-bottom:1.5rem !important}.ml-5{margin-left:1.5rem !important}.mx-5{margin-left:1.5rem !important;margin-right:1.5rem !important}.my-5{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.m-6{margin:3rem !important}.mt-6{margin-top:3rem !important}.mr-6{margin-right:3rem !important}.mb-6{margin-bottom:3rem !important}.ml-6{margin-left:3rem !important}.mx-6{margin-left:3rem !important;margin-right:3rem !important}.my-6{margin-top:3rem !important;margin-bottom:3rem !important}.m-auto{margin:auto !important}.mt-auto{margin-top:auto !important}.mr-auto{margin-right:auto !important}.mb-auto{margin-bottom:auto !important}.ml-auto{margin-left:auto !important}.mx-auto{margin-left:auto !important;margin-right:auto !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.p-0{padding:0 !important}.pt-0{padding-top:0 !important}.pr-0{padding-right:0 !important}.pb-0{padding-bottom:0 !important}.pl-0{padding-left:0 !important}.px-0{padding-left:0 !important;padding-right:0 !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.p-1{padding:.25rem !important}.pt-1{padding-top:.25rem !important}.pr-1{padding-right:.25rem !important}.pb-1{padding-bottom:.25rem !important}.pl-1{padding-left:.25rem !important}.px-1{padding-left:.25rem !important;padding-right:.25rem !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.p-2{padding:.5rem !important}.pt-2{padding-top:.5rem !important}.pr-2{padding-right:.5rem !important}.pb-2{padding-bottom:.5rem !important}.pl-2{padding-left:.5rem !important}.px-2{padding-left:.5rem !important;padding-right:.5rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.p-3{padding:.75rem !important}.pt-3{padding-top:.75rem !important}.pr-3{padding-right:.75rem !important}.pb-3{padding-bottom:.75rem !important}.pl-3{padding-left:.75rem !important}.px-3{padding-left:.75rem !important;padding-right:.75rem !important}.py-3{padding-top:.75rem !important;padding-bottom:.75rem !important}.p-4{padding:1rem !important}.pt-4{padding-top:1rem !important}.pr-4{padding-right:1rem !important}.pb-4{padding-bottom:1rem !important}.pl-4{padding-left:1rem !important}.px-4{padding-left:1rem !important;padding-right:1rem !important}.py-4{padding-top:1rem !important;padding-bottom:1rem !important}.p-5{padding:1.5rem !important}.pt-5{padding-top:1.5rem !important}.pr-5{padding-right:1.5rem !important}.pb-5{padding-bottom:1.5rem !important}.pl-5{padding-left:1.5rem !important}.px-5{padding-left:1.5rem !important;padding-right:1.5rem !important}.py-5{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.p-6{padding:3rem !important}.pt-6{padding-top:3rem !important}.pr-6{padding-right:3rem !important}.pb-6{padding-bottom:3rem !important}.pl-6{padding-left:3rem !important}.px-6{padding-left:3rem !important;padding-right:3rem !important}.py-6{padding-top:3rem !important;padding-bottom:3rem !important}.p-auto{padding:auto !important}.pt-auto{padding-top:auto !important}.pr-auto{padding-right:auto !important}.pb-auto{padding-bottom:auto !important}.pl-auto{padding-left:auto !important}.px-auto{padding-left:auto !important;padding-right:auto !important}.py-auto{padding-top:auto !important;padding-bottom:auto !important}.is-size-1{font-size:3rem !important}.is-size-2{font-size:2.5rem !important}.is-size-3{font-size:2rem !important}.is-size-4{font-size:1.5rem !important}.is-size-5{font-size:1.25rem !important}.is-size-6{font-size:1rem !important}.is-size-7,.docstring>section>a.docs-sourcelink{font-size:.75rem !important}@media screen and (max-width: 768px){.is-size-1-mobile{font-size:3rem !important}.is-size-2-mobile{font-size:2.5rem !important}.is-size-3-mobile{font-size:2rem !important}.is-size-4-mobile{font-size:1.5rem !important}.is-size-5-mobile{font-size:1.25rem !important}.is-size-6-mobile{font-size:1rem !important}.is-size-7-mobile{font-size:.75rem !important}}@media screen and (min-width: 769px),print{.is-size-1-tablet{font-size:3rem !important}.is-size-2-tablet{font-size:2.5rem !important}.is-size-3-tablet{font-size:2rem !important}.is-size-4-tablet{font-size:1.5rem !important}.is-size-5-tablet{font-size:1.25rem !important}.is-size-6-tablet{font-size:1rem !important}.is-size-7-tablet{font-size:.75rem !important}}@media screen and (max-width: 1055px){.is-size-1-touch{font-size:3rem !important}.is-size-2-touch{font-size:2.5rem !important}.is-size-3-touch{font-size:2rem !important}.is-size-4-touch{font-size:1.5rem !important}.is-size-5-touch{font-size:1.25rem !important}.is-size-6-touch{font-size:1rem !important}.is-size-7-touch{font-size:.75rem !important}}@media screen and (min-width: 1056px){.is-size-1-desktop{font-size:3rem !important}.is-size-2-desktop{font-size:2.5rem !important}.is-size-3-desktop{font-size:2rem !important}.is-size-4-desktop{font-size:1.5rem !important}.is-size-5-desktop{font-size:1.25rem !important}.is-size-6-desktop{font-size:1rem !important}.is-size-7-desktop{font-size:.75rem !important}}@media screen and (min-width: 1216px){.is-size-1-widescreen{font-size:3rem !important}.is-size-2-widescreen{font-size:2.5rem !important}.is-size-3-widescreen{font-size:2rem !important}.is-size-4-widescreen{font-size:1.5rem !important}.is-size-5-widescreen{font-size:1.25rem !important}.is-size-6-widescreen{font-size:1rem !important}.is-size-7-widescreen{font-size:.75rem !important}}@media screen and (min-width: 1408px){.is-size-1-fullhd{font-size:3rem !important}.is-size-2-fullhd{font-size:2.5rem !important}.is-size-3-fullhd{font-size:2rem !important}.is-size-4-fullhd{font-size:1.5rem !important}.is-size-5-fullhd{font-size:1.25rem !important}.is-size-6-fullhd{font-size:1rem !important}.is-size-7-fullhd{font-size:.75rem !important}}.has-text-centered{text-align:center !important}.has-text-justified{text-align:justify !important}.has-text-left{text-align:left !important}.has-text-right{text-align:right !important}@media screen and (max-width: 768px){.has-text-centered-mobile{text-align:center !important}}@media screen and (min-width: 769px),print{.has-text-centered-tablet{text-align:center !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-centered-tablet-only{text-align:center !important}}@media screen and (max-width: 1055px){.has-text-centered-touch{text-align:center !important}}@media screen and (min-width: 1056px){.has-text-centered-desktop{text-align:center !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-centered-desktop-only{text-align:center !important}}@media screen and (min-width: 1216px){.has-text-centered-widescreen{text-align:center !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-centered-widescreen-only{text-align:center !important}}@media screen and (min-width: 1408px){.has-text-centered-fullhd{text-align:center !important}}@media screen and (max-width: 768px){.has-text-justified-mobile{text-align:justify !important}}@media screen and (min-width: 769px),print{.has-text-justified-tablet{text-align:justify !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-justified-tablet-only{text-align:justify !important}}@media screen and (max-width: 1055px){.has-text-justified-touch{text-align:justify !important}}@media screen and (min-width: 1056px){.has-text-justified-desktop{text-align:justify !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-justified-desktop-only{text-align:justify !important}}@media screen and (min-width: 1216px){.has-text-justified-widescreen{text-align:justify !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-justified-widescreen-only{text-align:justify !important}}@media screen and (min-width: 1408px){.has-text-justified-fullhd{text-align:justify !important}}@media screen and (max-width: 768px){.has-text-left-mobile{text-align:left !important}}@media screen and (min-width: 769px),print{.has-text-left-tablet{text-align:left !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-left-tablet-only{text-align:left !important}}@media screen and (max-width: 1055px){.has-text-left-touch{text-align:left !important}}@media screen and (min-width: 1056px){.has-text-left-desktop{text-align:left !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-left-desktop-only{text-align:left !important}}@media screen and (min-width: 1216px){.has-text-left-widescreen{text-align:left !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-left-widescreen-only{text-align:left !important}}@media screen and (min-width: 1408px){.has-text-left-fullhd{text-align:left !important}}@media screen and (max-width: 768px){.has-text-right-mobile{text-align:right !important}}@media screen and (min-width: 769px),print{.has-text-right-tablet{text-align:right !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.has-text-right-tablet-only{text-align:right !important}}@media screen and (max-width: 1055px){.has-text-right-touch{text-align:right !important}}@media screen and (min-width: 1056px){.has-text-right-desktop{text-align:right !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.has-text-right-desktop-only{text-align:right !important}}@media screen and (min-width: 1216px){.has-text-right-widescreen{text-align:right !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.has-text-right-widescreen-only{text-align:right !important}}@media screen and (min-width: 1408px){.has-text-right-fullhd{text-align:right !important}}.is-capitalized{text-transform:capitalize !important}.is-lowercase{text-transform:lowercase !important}.is-uppercase{text-transform:uppercase !important}.is-italic{font-style:italic !important}.is-underlined{text-decoration:underline !important}.has-text-weight-light{font-weight:300 !important}.has-text-weight-normal{font-weight:400 !important}.has-text-weight-medium{font-weight:500 !important}.has-text-weight-semibold{font-weight:600 !important}.has-text-weight-bold{font-weight:700 !important}.is-family-primary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-secondary{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-sans-serif{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif !important}.is-family-monospace{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-family-code{font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace !important}.is-block{display:block !important}@media screen and (max-width: 768px){.is-block-mobile{display:block !important}}@media screen and (min-width: 769px),print{.is-block-tablet{display:block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-block-tablet-only{display:block !important}}@media screen and (max-width: 1055px){.is-block-touch{display:block !important}}@media screen and (min-width: 1056px){.is-block-desktop{display:block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-block-desktop-only{display:block !important}}@media screen and (min-width: 1216px){.is-block-widescreen{display:block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-block-widescreen-only{display:block !important}}@media screen and (min-width: 1408px){.is-block-fullhd{display:block !important}}.is-flex{display:flex !important}@media screen and (max-width: 768px){.is-flex-mobile{display:flex !important}}@media screen and (min-width: 769px),print{.is-flex-tablet{display:flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-flex-tablet-only{display:flex !important}}@media screen and (max-width: 1055px){.is-flex-touch{display:flex !important}}@media screen and (min-width: 1056px){.is-flex-desktop{display:flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-flex-desktop-only{display:flex !important}}@media screen and (min-width: 1216px){.is-flex-widescreen{display:flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-flex-widescreen-only{display:flex !important}}@media screen and (min-width: 1408px){.is-flex-fullhd{display:flex !important}}.is-inline{display:inline !important}@media screen and (max-width: 768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width: 769px),print{.is-inline-tablet{display:inline !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width: 1055px){.is-inline-touch{display:inline !important}}@media screen and (min-width: 1056px){.is-inline-desktop{display:inline !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width: 1216px){.is-inline-widescreen{display:inline !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-widescreen-only{display:inline !important}}@media screen and (min-width: 1408px){.is-inline-fullhd{display:inline !important}}.is-inline-block{display:inline-block !important}@media screen and (max-width: 768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width: 769px),print{.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width: 1055px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width: 1056px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width: 1216px){.is-inline-block-widescreen{display:inline-block !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-block-widescreen-only{display:inline-block !important}}@media screen and (min-width: 1408px){.is-inline-block-fullhd{display:inline-block !important}}.is-inline-flex{display:inline-flex !important}@media screen and (max-width: 768px){.is-inline-flex-mobile{display:inline-flex !important}}@media screen and (min-width: 769px),print{.is-inline-flex-tablet{display:inline-flex !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-inline-flex-tablet-only{display:inline-flex !important}}@media screen and (max-width: 1055px){.is-inline-flex-touch{display:inline-flex !important}}@media screen and (min-width: 1056px){.is-inline-flex-desktop{display:inline-flex !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-inline-flex-desktop-only{display:inline-flex !important}}@media screen and (min-width: 1216px){.is-inline-flex-widescreen{display:inline-flex !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-inline-flex-widescreen-only{display:inline-flex !important}}@media screen and (min-width: 1408px){.is-inline-flex-fullhd{display:inline-flex !important}}.is-hidden{display:none !important}.is-sr-only{border:none !important;clip:rect(0, 0, 0, 0) !important;height:0.01em !important;overflow:hidden !important;padding:0 !important;position:absolute !important;white-space:nowrap !important;width:0.01em !important}@media screen and (max-width: 768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width: 769px),print{.is-hidden-tablet{display:none !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width: 1055px){.is-hidden-touch{display:none !important}}@media screen and (min-width: 1056px){.is-hidden-desktop{display:none !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width: 1216px){.is-hidden-widescreen{display:none !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-hidden-widescreen-only{display:none !important}}@media screen and (min-width: 1408px){.is-hidden-fullhd{display:none !important}}.is-invisible{visibility:hidden !important}@media screen and (max-width: 768px){.is-invisible-mobile{visibility:hidden !important}}@media screen and (min-width: 769px),print{.is-invisible-tablet{visibility:hidden !important}}@media screen and (min-width: 769px) and (max-width: 1055px){.is-invisible-tablet-only{visibility:hidden !important}}@media screen and (max-width: 1055px){.is-invisible-touch{visibility:hidden !important}}@media screen and (min-width: 1056px){.is-invisible-desktop{visibility:hidden !important}}@media screen and (min-width: 1056px) and (max-width: 1215px){.is-invisible-desktop-only{visibility:hidden !important}}@media screen and (min-width: 1216px){.is-invisible-widescreen{visibility:hidden !important}}@media screen and (min-width: 1216px) and (max-width: 1407px){.is-invisible-widescreen-only{visibility:hidden !important}}@media screen and (min-width: 1408px){.is-invisible-fullhd{visibility:hidden !important}}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,*::before,*::after{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}html{background-color:#fff;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:auto;overflow-y:scroll;text-rendering:optimizeLegibility;text-size-adjust:100%}article,aside,figure,footer,header,hgroup,section{display:block}body,button,input,optgroup,select,textarea{font-family:"Lato Medium",-apple-system,BlinkMacSystemFont,"Segoe UI","Helvetica Neue","Helvetica","Arial",sans-serif}code,pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}body{color:#222;font-size:1em;font-weight:400;line-height:1.5}a{color:#2e63b8;cursor:pointer;text-decoration:none}a strong{color:currentColor}a:hover{color:#363636}code{background-color:rgba(0,0,0,0.05);color:#000;font-size:.875em;font-weight:normal;padding:.1em}hr{background-color:#f5f5f5;border:none;display:block;height:2px;margin:1.5rem 0}img{height:auto;max-width:100%}input[type="checkbox"],input[type="radio"]{vertical-align:baseline}small{font-size:.875em}span{font-style:inherit;font-weight:inherit}strong{color:#222;font-weight:700}fieldset{border:none}pre{-webkit-overflow-scrolling:touch;background-color:#f5f5f5;color:#222;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}table td,table th{vertical-align:top}table td:not([align]),table th:not([align]){text-align:inherit}table th{color:#222}@keyframes spinAround{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}.box{background-color:#fff;border-radius:6px;box-shadow:#bbb;color:#222;display:block;padding:1.25rem}a.box:hover,a.box:focus{box-shadow:0 0.5em 1em -0.125em rgba(10,10,10,0.1),0 0 0 1px #2e63b8}a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2),0 0 0 1px #2e63b8}.button{background-color:#fff;border-color:#dbdbdb;border-width:1px;color:#222;cursor:pointer;justify-content:center;padding-bottom:calc(0.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(0.5em - 1px);text-align:center;white-space:nowrap}.button strong{color:inherit}.button .icon,.button .icon.is-small,.button #documenter .docs-sidebar form.docs-search>input.icon,#documenter .docs-sidebar .button form.docs-search>input.icon,.button .icon.is-medium,.button .icon.is-large{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-left:calc(-0.5em - 1px);margin-right:.25em}.button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-0.5em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-0.5em - 1px);margin-right:calc(-0.5em - 1px)}.button:hover,.button.is-hovered{border-color:#b5b5b5;color:#363636}.button:focus,.button.is-focused{border-color:#3c5dcd;color:#363636}.button:focus:not(:active),.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.button:active,.button.is-active{border-color:#4a4a4a;color:#363636}.button.is-text{background-color:transparent;border-color:transparent;color:#222;text-decoration:underline}.button.is-text:hover,.button.is-text.is-hovered,.button.is-text:focus,.button.is-text.is-focused{background-color:#f5f5f5;color:#222}.button.is-text:active,.button.is-text.is-active{background-color:#e8e8e8;color:#222}.button.is-text[disabled],fieldset[disabled] .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}.button.is-ghost{background:none;border-color:rgba(0,0,0,0);color:#2e63b8;text-decoration:none}.button.is-ghost:hover,.button.is-ghost.is-hovered{color:#2e63b8;text-decoration:underline}.button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}.button.is-white:hover,.button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.button.is-white:focus,.button.is-white.is-focused{border-color:transparent;color:#0a0a0a}.button.is-white:focus:not(:active),.button.is-white.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}.button.is-white:active,.button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.button.is-white[disabled],fieldset[disabled] .button.is-white{background-color:#fff;border-color:#fff;box-shadow:none}.button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted:hover,.button.is-white.is-inverted.is-hovered{background-color:#000}.button.is-white.is-inverted[disabled],fieldset[disabled] .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}.button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-white.is-outlined:hover,.button.is-white.is-outlined.is-hovered,.button.is-white.is-outlined:focus,.button.is-white.is-outlined.is-focused{background-color:#fff;border-color:#fff;color:#0a0a0a}.button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-white.is-outlined.is-loading:hover::after,.button.is-white.is-outlined.is-loading.is-hovered::after,.button.is-white.is-outlined.is-loading:focus::after,.button.is-white.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-white.is-outlined[disabled],fieldset[disabled] .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-white.is-inverted.is-outlined:hover,.button.is-white.is-inverted.is-outlined.is-hovered,.button.is-white.is-inverted.is-outlined:focus,.button.is-white.is-inverted.is-outlined.is-focused{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted.is-outlined.is-loading:hover::after,.button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-white.is-inverted.is-outlined.is-loading:focus::after,.button.is-white.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}.button.is-black:hover,.button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}.button.is-black:focus,.button.is-black.is-focused{border-color:transparent;color:#fff}.button.is-black:focus:not(:active),.button.is-black.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}.button.is-black:active,.button.is-black.is-active{background-color:#000;border-color:transparent;color:#fff}.button.is-black[disabled],fieldset[disabled] .button.is-black{background-color:#0a0a0a;border-color:#0a0a0a;box-shadow:none}.button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted:hover,.button.is-black.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-black.is-inverted[disabled],fieldset[disabled] .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}.button.is-black.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-black.is-outlined:hover,.button.is-black.is-outlined.is-hovered,.button.is-black.is-outlined:focus,.button.is-black.is-outlined.is-focused{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-black.is-outlined.is-loading:hover::after,.button.is-black.is-outlined.is-loading.is-hovered::after,.button.is-black.is-outlined.is-loading:focus::after,.button.is-black.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-black.is-outlined[disabled],fieldset[disabled] .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-black.is-inverted.is-outlined:hover,.button.is-black.is-inverted.is-outlined.is-hovered,.button.is-black.is-inverted.is-outlined:focus,.button.is-black.is-inverted.is-outlined.is-focused{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted.is-outlined.is-loading:hover::after,.button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-black.is-inverted.is-outlined.is-loading:focus::after,.button.is-black.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-light{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-light:hover,.button.is-light.is-hovered{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-light:focus,.button.is-light.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-light:focus:not(:active),.button.is-light.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}.button.is-light:active,.button.is-light.is-active{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-light[disabled],fieldset[disabled] .button.is-light{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none}.button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);color:#f5f5f5}.button.is-light.is-inverted:hover,.button.is-light.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}.button.is-light.is-inverted[disabled],fieldset[disabled] .button.is-light.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#f5f5f5}.button.is-light.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}.button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}.button.is-light.is-outlined:hover,.button.is-light.is-outlined.is-hovered,.button.is-light.is-outlined:focus,.button.is-light.is-outlined.is-focused{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}.button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-light.is-outlined.is-loading:hover::after,.button.is-light.is-outlined.is-loading.is-hovered::after,.button.is-light.is-outlined.is-loading:focus::after,.button.is-light.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}.button.is-light.is-outlined[disabled],fieldset[disabled] .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}.button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}.button.is-light.is-inverted.is-outlined:hover,.button.is-light.is-inverted.is-outlined.is-hovered,.button.is-light.is-inverted.is-outlined:focus,.button.is-light.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#f5f5f5}.button.is-light.is-inverted.is-outlined.is-loading:hover::after,.button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-light.is-inverted.is-outlined.is-loading:focus::after,.button.is-light.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}.button.is-dark,.content kbd.button{background-color:#363636;border-color:transparent;color:#fff}.button.is-dark:hover,.content kbd.button:hover,.button.is-dark.is-hovered,.content kbd.button.is-hovered{background-color:#2f2f2f;border-color:transparent;color:#fff}.button.is-dark:focus,.content kbd.button:focus,.button.is-dark.is-focused,.content kbd.button.is-focused{border-color:transparent;color:#fff}.button.is-dark:focus:not(:active),.content kbd.button:focus:not(:active),.button.is-dark.is-focused:not(:active),.content kbd.button.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(54,54,54,0.25)}.button.is-dark:active,.content kbd.button:active,.button.is-dark.is-active,.content kbd.button.is-active{background-color:#292929;border-color:transparent;color:#fff}.button.is-dark[disabled],.content kbd.button[disabled],fieldset[disabled] .button.is-dark,fieldset[disabled] .content kbd.button,.content fieldset[disabled] kbd.button{background-color:#363636;border-color:#363636;box-shadow:none}.button.is-dark.is-inverted,.content kbd.button.is-inverted{background-color:#fff;color:#363636}.button.is-dark.is-inverted:hover,.content kbd.button.is-inverted:hover,.button.is-dark.is-inverted.is-hovered,.content kbd.button.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-dark.is-inverted[disabled],.content kbd.button.is-inverted[disabled],fieldset[disabled] .button.is-dark.is-inverted,fieldset[disabled] .content kbd.button.is-inverted,.content fieldset[disabled] kbd.button.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#363636}.button.is-dark.is-loading::after,.content kbd.button.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-dark.is-outlined,.content kbd.button.is-outlined{background-color:transparent;border-color:#363636;color:#363636}.button.is-dark.is-outlined:hover,.content kbd.button.is-outlined:hover,.button.is-dark.is-outlined.is-hovered,.content kbd.button.is-outlined.is-hovered,.button.is-dark.is-outlined:focus,.content kbd.button.is-outlined:focus,.button.is-dark.is-outlined.is-focused,.content kbd.button.is-outlined.is-focused{background-color:#363636;border-color:#363636;color:#fff}.button.is-dark.is-outlined.is-loading::after,.content kbd.button.is-outlined.is-loading::after{border-color:transparent transparent #363636 #363636 !important}.button.is-dark.is-outlined.is-loading:hover::after,.content kbd.button.is-outlined.is-loading:hover::after,.button.is-dark.is-outlined.is-loading.is-hovered::after,.content kbd.button.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-outlined.is-loading:focus::after,.content kbd.button.is-outlined.is-loading:focus::after,.button.is-dark.is-outlined.is-loading.is-focused::after,.content kbd.button.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-dark.is-outlined[disabled],.content kbd.button.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-outlined,fieldset[disabled] .content kbd.button.is-outlined,.content fieldset[disabled] kbd.button.is-outlined{background-color:transparent;border-color:#363636;box-shadow:none;color:#363636}.button.is-dark.is-inverted.is-outlined,.content kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-dark.is-inverted.is-outlined:hover,.content kbd.button.is-inverted.is-outlined:hover,.button.is-dark.is-inverted.is-outlined.is-hovered,.content kbd.button.is-inverted.is-outlined.is-hovered,.button.is-dark.is-inverted.is-outlined:focus,.content kbd.button.is-inverted.is-outlined:focus,.button.is-dark.is-inverted.is-outlined.is-focused,.content kbd.button.is-inverted.is-outlined.is-focused{background-color:#fff;color:#363636}.button.is-dark.is-inverted.is-outlined.is-loading:hover::after,.content kbd.button.is-inverted.is-outlined.is-loading:hover::after,.button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,.content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-inverted.is-outlined.is-loading:focus::after,.content kbd.button.is-inverted.is-outlined.is-loading:focus::after,.button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after,.content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #363636 #363636 !important}.button.is-dark.is-inverted.is-outlined[disabled],.content kbd.button.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-inverted.is-outlined,fieldset[disabled] .content kbd.button.is-inverted.is-outlined,.content fieldset[disabled] kbd.button.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary,.docstring>section>a.button.docs-sourcelink{background-color:#4eb5de;border-color:transparent;color:#fff}.button.is-primary:hover,.docstring>section>a.button.docs-sourcelink:hover,.button.is-primary.is-hovered,.docstring>section>a.button.is-hovered.docs-sourcelink{background-color:#43b1dc;border-color:transparent;color:#fff}.button.is-primary:focus,.docstring>section>a.button.docs-sourcelink:focus,.button.is-primary.is-focused,.docstring>section>a.button.is-focused.docs-sourcelink{border-color:transparent;color:#fff}.button.is-primary:focus:not(:active),.docstring>section>a.button.docs-sourcelink:focus:not(:active),.button.is-primary.is-focused:not(:active),.docstring>section>a.button.is-focused.docs-sourcelink:not(:active){box-shadow:0 0 0 0.125em rgba(78,181,222,0.25)}.button.is-primary:active,.docstring>section>a.button.docs-sourcelink:active,.button.is-primary.is-active,.docstring>section>a.button.is-active.docs-sourcelink{background-color:#39acda;border-color:transparent;color:#fff}.button.is-primary[disabled],.docstring>section>a.button.docs-sourcelink[disabled],fieldset[disabled] .button.is-primary,fieldset[disabled] .docstring>section>a.button.docs-sourcelink{background-color:#4eb5de;border-color:#4eb5de;box-shadow:none}.button.is-primary.is-inverted,.docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;color:#4eb5de}.button.is-primary.is-inverted:hover,.docstring>section>a.button.is-inverted.docs-sourcelink:hover,.button.is-primary.is-inverted.is-hovered,.docstring>section>a.button.is-inverted.is-hovered.docs-sourcelink{background-color:#f2f2f2}.button.is-primary.is-inverted[disabled],.docstring>section>a.button.is-inverted.docs-sourcelink[disabled],fieldset[disabled] .button.is-primary.is-inverted,fieldset[disabled] .docstring>section>a.button.is-inverted.docs-sourcelink{background-color:#fff;border-color:transparent;box-shadow:none;color:#4eb5de}.button.is-primary.is-loading::after,.docstring>section>a.button.is-loading.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}.button.is-primary.is-outlined,.docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#4eb5de;color:#4eb5de}.button.is-primary.is-outlined:hover,.docstring>section>a.button.is-outlined.docs-sourcelink:hover,.button.is-primary.is-outlined.is-hovered,.docstring>section>a.button.is-outlined.is-hovered.docs-sourcelink,.button.is-primary.is-outlined:focus,.docstring>section>a.button.is-outlined.docs-sourcelink:focus,.button.is-primary.is-outlined.is-focused,.docstring>section>a.button.is-outlined.is-focused.docs-sourcelink{background-color:#4eb5de;border-color:#4eb5de;color:#fff}.button.is-primary.is-outlined.is-loading::after,.docstring>section>a.button.is-outlined.is-loading.docs-sourcelink::after{border-color:transparent transparent #4eb5de #4eb5de !important}.button.is-primary.is-outlined.is-loading:hover::after,.docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:hover::after,.button.is-primary.is-outlined.is-loading.is-hovered::after,.docstring>section>a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after,.button.is-primary.is-outlined.is-loading:focus::after,.docstring>section>a.button.is-outlined.is-loading.docs-sourcelink:focus::after,.button.is-primary.is-outlined.is-loading.is-focused::after,.docstring>section>a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #fff #fff !important}.button.is-primary.is-outlined[disabled],.docstring>section>a.button.is-outlined.docs-sourcelink[disabled],fieldset[disabled] .button.is-primary.is-outlined,fieldset[disabled] .docstring>section>a.button.is-outlined.docs-sourcelink{background-color:transparent;border-color:#4eb5de;box-shadow:none;color:#4eb5de}.button.is-primary.is-inverted.is-outlined,.docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;color:#fff}.button.is-primary.is-inverted.is-outlined:hover,.docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:hover,.button.is-primary.is-inverted.is-outlined.is-hovered,.docstring>section>a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink,.button.is-primary.is-inverted.is-outlined:focus,.docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink:focus,.button.is-primary.is-inverted.is-outlined.is-focused,.docstring>section>a.button.is-inverted.is-outlined.is-focused.docs-sourcelink{background-color:#fff;color:#4eb5de}.button.is-primary.is-inverted.is-outlined.is-loading:hover::after,.docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after,.button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,.docstring>section>a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after,.button.is-primary.is-inverted.is-outlined.is-loading:focus::after,.docstring>section>a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after,.button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after,.docstring>section>a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after{border-color:transparent transparent #4eb5de #4eb5de !important}.button.is-primary.is-inverted.is-outlined[disabled],.docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink[disabled],fieldset[disabled] .button.is-primary.is-inverted.is-outlined,fieldset[disabled] .docstring>section>a.button.is-inverted.is-outlined.docs-sourcelink{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary.is-light,.docstring>section>a.button.is-light.docs-sourcelink{background-color:#eef8fc;color:#1a6d8e}.button.is-primary.is-light:hover,.docstring>section>a.button.is-light.docs-sourcelink:hover,.button.is-primary.is-light.is-hovered,.docstring>section>a.button.is-light.is-hovered.docs-sourcelink{background-color:#e3f3fa;border-color:transparent;color:#1a6d8e}.button.is-primary.is-light:active,.docstring>section>a.button.is-light.docs-sourcelink:active,.button.is-primary.is-light.is-active,.docstring>section>a.button.is-light.is-active.docs-sourcelink{background-color:#d8eff8;border-color:transparent;color:#1a6d8e}.button.is-link{background-color:#2e63b8;border-color:transparent;color:#fff}.button.is-link:hover,.button.is-link.is-hovered{background-color:#2b5eae;border-color:transparent;color:#fff}.button.is-link:focus,.button.is-link.is-focused{border-color:transparent;color:#fff}.button.is-link:focus:not(:active),.button.is-link.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.button.is-link:active,.button.is-link.is-active{background-color:#2958a4;border-color:transparent;color:#fff}.button.is-link[disabled],fieldset[disabled] .button.is-link{background-color:#2e63b8;border-color:#2e63b8;box-shadow:none}.button.is-link.is-inverted{background-color:#fff;color:#2e63b8}.button.is-link.is-inverted:hover,.button.is-link.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-link.is-inverted[disabled],fieldset[disabled] .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#2e63b8}.button.is-link.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-link.is-outlined{background-color:transparent;border-color:#2e63b8;color:#2e63b8}.button.is-link.is-outlined:hover,.button.is-link.is-outlined.is-hovered,.button.is-link.is-outlined:focus,.button.is-link.is-outlined.is-focused{background-color:#2e63b8;border-color:#2e63b8;color:#fff}.button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #2e63b8 #2e63b8 !important}.button.is-link.is-outlined.is-loading:hover::after,.button.is-link.is-outlined.is-loading.is-hovered::after,.button.is-link.is-outlined.is-loading:focus::after,.button.is-link.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-link.is-outlined[disabled],fieldset[disabled] .button.is-link.is-outlined{background-color:transparent;border-color:#2e63b8;box-shadow:none;color:#2e63b8}.button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-link.is-inverted.is-outlined:hover,.button.is-link.is-inverted.is-outlined.is-hovered,.button.is-link.is-inverted.is-outlined:focus,.button.is-link.is-inverted.is-outlined.is-focused{background-color:#fff;color:#2e63b8}.button.is-link.is-inverted.is-outlined.is-loading:hover::after,.button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-link.is-inverted.is-outlined.is-loading:focus::after,.button.is-link.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #2e63b8 #2e63b8 !important}.button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-link.is-light{background-color:#eff3fb;color:#3169c4}.button.is-link.is-light:hover,.button.is-link.is-light.is-hovered{background-color:#e4ecf8;border-color:transparent;color:#3169c4}.button.is-link.is-light:active,.button.is-link.is-light.is-active{background-color:#dae5f6;border-color:transparent;color:#3169c4}.button.is-info{background-color:#209cee;border-color:transparent;color:#fff}.button.is-info:hover,.button.is-info.is-hovered{background-color:#1497ed;border-color:transparent;color:#fff}.button.is-info:focus,.button.is-info.is-focused{border-color:transparent;color:#fff}.button.is-info:focus:not(:active),.button.is-info.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(32,156,238,0.25)}.button.is-info:active,.button.is-info.is-active{background-color:#1190e3;border-color:transparent;color:#fff}.button.is-info[disabled],fieldset[disabled] .button.is-info{background-color:#209cee;border-color:#209cee;box-shadow:none}.button.is-info.is-inverted{background-color:#fff;color:#209cee}.button.is-info.is-inverted:hover,.button.is-info.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-info.is-inverted[disabled],fieldset[disabled] .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#209cee}.button.is-info.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-info.is-outlined{background-color:transparent;border-color:#209cee;color:#209cee}.button.is-info.is-outlined:hover,.button.is-info.is-outlined.is-hovered,.button.is-info.is-outlined:focus,.button.is-info.is-outlined.is-focused{background-color:#209cee;border-color:#209cee;color:#fff}.button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #209cee #209cee !important}.button.is-info.is-outlined.is-loading:hover::after,.button.is-info.is-outlined.is-loading.is-hovered::after,.button.is-info.is-outlined.is-loading:focus::after,.button.is-info.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-info.is-outlined[disabled],fieldset[disabled] .button.is-info.is-outlined{background-color:transparent;border-color:#209cee;box-shadow:none;color:#209cee}.button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-info.is-inverted.is-outlined:hover,.button.is-info.is-inverted.is-outlined.is-hovered,.button.is-info.is-inverted.is-outlined:focus,.button.is-info.is-inverted.is-outlined.is-focused{background-color:#fff;color:#209cee}.button.is-info.is-inverted.is-outlined.is-loading:hover::after,.button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-info.is-inverted.is-outlined.is-loading:focus::after,.button.is-info.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #209cee #209cee !important}.button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-info.is-light{background-color:#ecf7fe;color:#0e72b4}.button.is-info.is-light:hover,.button.is-info.is-light.is-hovered{background-color:#e0f1fd;border-color:transparent;color:#0e72b4}.button.is-info.is-light:active,.button.is-info.is-light.is-active{background-color:#d4ecfc;border-color:transparent;color:#0e72b4}.button.is-success{background-color:#22c35b;border-color:transparent;color:#fff}.button.is-success:hover,.button.is-success.is-hovered{background-color:#20b856;border-color:transparent;color:#fff}.button.is-success:focus,.button.is-success.is-focused{border-color:transparent;color:#fff}.button.is-success:focus:not(:active),.button.is-success.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(34,195,91,0.25)}.button.is-success:active,.button.is-success.is-active{background-color:#1ead51;border-color:transparent;color:#fff}.button.is-success[disabled],fieldset[disabled] .button.is-success{background-color:#22c35b;border-color:#22c35b;box-shadow:none}.button.is-success.is-inverted{background-color:#fff;color:#22c35b}.button.is-success.is-inverted:hover,.button.is-success.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-success.is-inverted[disabled],fieldset[disabled] .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#22c35b}.button.is-success.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-success.is-outlined{background-color:transparent;border-color:#22c35b;color:#22c35b}.button.is-success.is-outlined:hover,.button.is-success.is-outlined.is-hovered,.button.is-success.is-outlined:focus,.button.is-success.is-outlined.is-focused{background-color:#22c35b;border-color:#22c35b;color:#fff}.button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #22c35b #22c35b !important}.button.is-success.is-outlined.is-loading:hover::after,.button.is-success.is-outlined.is-loading.is-hovered::after,.button.is-success.is-outlined.is-loading:focus::after,.button.is-success.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-success.is-outlined[disabled],fieldset[disabled] .button.is-success.is-outlined{background-color:transparent;border-color:#22c35b;box-shadow:none;color:#22c35b}.button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-success.is-inverted.is-outlined:hover,.button.is-success.is-inverted.is-outlined.is-hovered,.button.is-success.is-inverted.is-outlined:focus,.button.is-success.is-inverted.is-outlined.is-focused{background-color:#fff;color:#22c35b}.button.is-success.is-inverted.is-outlined.is-loading:hover::after,.button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-success.is-inverted.is-outlined.is-loading:focus::after,.button.is-success.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #22c35b #22c35b !important}.button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-success.is-light{background-color:#eefcf3;color:#198f43}.button.is-success.is-light:hover,.button.is-success.is-light.is-hovered{background-color:#e3faeb;border-color:transparent;color:#198f43}.button.is-success.is-light:active,.button.is-success.is-light.is-active{background-color:#d8f8e3;border-color:transparent;color:#198f43}.button.is-warning{background-color:#ffdd57;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-warning:hover,.button.is-warning.is-hovered{background-color:#ffda4a;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-warning:focus,.button.is-warning.is-focused{border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-warning:focus:not(:active),.button.is-warning.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(255,221,87,0.25)}.button.is-warning:active,.button.is-warning.is-active{background-color:#ffd83e;border-color:transparent;color:rgba(0,0,0,0.7)}.button.is-warning[disabled],fieldset[disabled] .button.is-warning{background-color:#ffdd57;border-color:#ffdd57;box-shadow:none}.button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);color:#ffdd57}.button.is-warning.is-inverted:hover,.button.is-warning.is-inverted.is-hovered{background-color:rgba(0,0,0,0.7)}.button.is-warning.is-inverted[disabled],fieldset[disabled] .button.is-warning.is-inverted{background-color:rgba(0,0,0,0.7);border-color:transparent;box-shadow:none;color:#ffdd57}.button.is-warning.is-loading::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}.button.is-warning.is-outlined{background-color:transparent;border-color:#ffdd57;color:#ffdd57}.button.is-warning.is-outlined:hover,.button.is-warning.is-outlined.is-hovered,.button.is-warning.is-outlined:focus,.button.is-warning.is-outlined.is-focused{background-color:#ffdd57;border-color:#ffdd57;color:rgba(0,0,0,0.7)}.button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #ffdd57 #ffdd57 !important}.button.is-warning.is-outlined.is-loading:hover::after,.button.is-warning.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-outlined.is-loading:focus::after,.button.is-warning.is-outlined.is-loading.is-focused::after{border-color:transparent transparent rgba(0,0,0,0.7) rgba(0,0,0,0.7) !important}.button.is-warning.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-outlined{background-color:transparent;border-color:#ffdd57;box-shadow:none;color:#ffdd57}.button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);color:rgba(0,0,0,0.7)}.button.is-warning.is-inverted.is-outlined:hover,.button.is-warning.is-inverted.is-outlined.is-hovered,.button.is-warning.is-inverted.is-outlined:focus,.button.is-warning.is-inverted.is-outlined.is-focused{background-color:rgba(0,0,0,0.7);color:#ffdd57}.button.is-warning.is-inverted.is-outlined.is-loading:hover::after,.button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-inverted.is-outlined.is-loading:focus::after,.button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #ffdd57 #ffdd57 !important}.button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,0.7);box-shadow:none;color:rgba(0,0,0,0.7)}.button.is-warning.is-light{background-color:#fffbeb;color:#947600}.button.is-warning.is-light:hover,.button.is-warning.is-light.is-hovered{background-color:#fff8de;border-color:transparent;color:#947600}.button.is-warning.is-light:active,.button.is-warning.is-light.is-active{background-color:#fff6d1;border-color:transparent;color:#947600}.button.is-danger{background-color:#da0b00;border-color:transparent;color:#fff}.button.is-danger:hover,.button.is-danger.is-hovered{background-color:#cd0a00;border-color:transparent;color:#fff}.button.is-danger:focus,.button.is-danger.is-focused{border-color:transparent;color:#fff}.button.is-danger:focus:not(:active),.button.is-danger.is-focused:not(:active){box-shadow:0 0 0 0.125em rgba(218,11,0,0.25)}.button.is-danger:active,.button.is-danger.is-active{background-color:#c10a00;border-color:transparent;color:#fff}.button.is-danger[disabled],fieldset[disabled] .button.is-danger{background-color:#da0b00;border-color:#da0b00;box-shadow:none}.button.is-danger.is-inverted{background-color:#fff;color:#da0b00}.button.is-danger.is-inverted:hover,.button.is-danger.is-inverted.is-hovered{background-color:#f2f2f2}.button.is-danger.is-inverted[disabled],fieldset[disabled] .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#da0b00}.button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff !important}.button.is-danger.is-outlined{background-color:transparent;border-color:#da0b00;color:#da0b00}.button.is-danger.is-outlined:hover,.button.is-danger.is-outlined.is-hovered,.button.is-danger.is-outlined:focus,.button.is-danger.is-outlined.is-focused{background-color:#da0b00;border-color:#da0b00;color:#fff}.button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #da0b00 #da0b00 !important}.button.is-danger.is-outlined.is-loading:hover::after,.button.is-danger.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-outlined.is-loading:focus::after,.button.is-danger.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #fff #fff !important}.button.is-danger.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-outlined{background-color:transparent;border-color:#da0b00;box-shadow:none;color:#da0b00}.button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-danger.is-inverted.is-outlined:hover,.button.is-danger.is-inverted.is-outlined.is-hovered,.button.is-danger.is-inverted.is-outlined:focus,.button.is-danger.is-inverted.is-outlined.is-focused{background-color:#fff;color:#da0b00}.button.is-danger.is-inverted.is-outlined.is-loading:hover::after,.button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-inverted.is-outlined.is-loading:focus::after,.button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after{border-color:transparent transparent #da0b00 #da0b00 !important}.button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-danger.is-light{background-color:#ffeceb;color:#f50c00}.button.is-danger.is-light:hover,.button.is-danger.is-light.is-hovered{background-color:#ffe0de;border-color:transparent;color:#f50c00}.button.is-danger.is-light:active,.button.is-danger.is-light.is-active{background-color:#ffd3d1;border-color:transparent;color:#f50c00}.button.is-small,#documenter .docs-sidebar form.docs-search>input.button{font-size:.75rem}.button.is-small:not(.is-rounded),#documenter .docs-sidebar form.docs-search>input.button:not(.is-rounded){border-radius:2px}.button.is-normal{font-size:1rem}.button.is-medium{font-size:1.25rem}.button.is-large{font-size:1.5rem}.button[disabled],fieldset[disabled] .button{background-color:#fff;border-color:#dbdbdb;box-shadow:none;opacity:.5}.button.is-fullwidth{display:flex;width:100%}.button.is-loading{color:transparent !important;pointer-events:none}.button.is-loading::after{position:absolute;left:calc(50% - (1em * 0.5));top:calc(50% - (1em * 0.5));position:absolute !important}.button.is-static{background-color:#f5f5f5;border-color:#dbdbdb;color:#6b6b6b;box-shadow:none;pointer-events:none}.button.is-rounded,#documenter .docs-sidebar form.docs-search>input.button{border-radius:9999px;padding-left:calc(1em + 0.25em);padding-right:calc(1em + 0.25em)}.buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.buttons .button{margin-bottom:0.5rem}.buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}.buttons:last-child{margin-bottom:-0.5rem}.buttons:not(:last-child){margin-bottom:1rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:2px}.buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}.buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}.buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.buttons.has-addons .button:last-child{margin-right:0}.buttons.has-addons .button:hover,.buttons.has-addons .button.is-hovered{z-index:2}.buttons.has-addons .button:focus,.buttons.has-addons .button.is-focused,.buttons.has-addons .button:active,.buttons.has-addons .button.is-active,.buttons.has-addons .button.is-selected{z-index:3}.buttons.has-addons .button:focus:hover,.buttons.has-addons .button.is-focused:hover,.buttons.has-addons .button:active:hover,.buttons.has-addons .button.is-active:hover,.buttons.has-addons .button.is-selected:hover{z-index:4}.buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}.buttons.is-centered{justify-content:center}.buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}.buttons.is-right{justify-content:flex-end}.buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:0.25rem;margin-right:0.25rem}@media screen and (max-width: 768px){.button.is-responsive.is-small,#documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.5625rem}.button.is-responsive,.button.is-responsive.is-normal{font-size:.65625rem}.button.is-responsive.is-medium{font-size:.75rem}.button.is-responsive.is-large{font-size:1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.button.is-responsive.is-small,#documenter .docs-sidebar form.docs-search>input.is-responsive{font-size:.65625rem}.button.is-responsive,.button.is-responsive.is-normal{font-size:.75rem}.button.is-responsive.is-medium{font-size:1rem}.button.is-responsive.is-large{font-size:1.25rem}}.container{flex-grow:1;margin:0 auto;position:relative;width:auto}.container.is-fluid{max-width:none !important;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width: 1056px){.container{max-width:992px}}@media screen and (max-width: 1215px){.container.is-widescreen:not(.is-max-desktop){max-width:1152px}}@media screen and (max-width: 1407px){.container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width: 1216px){.container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width: 1408px){.container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}.content li+li{margin-top:0.25em}.content p:not(:last-child),.content dl:not(:last-child),.content ol:not(:last-child),.content ul:not(:last-child),.content blockquote:not(:last-child),.content pre:not(:last-child),.content table:not(:last-child){margin-bottom:1em}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{color:#222;font-weight:600;line-height:1.125}.content h1{font-size:2em;margin-bottom:0.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:0.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:0.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content h4{font-size:1.25em;margin-bottom:0.8em}.content h5{font-size:1.125em;margin-bottom:0.8888em}.content h6{font-size:1em;margin-bottom:1em}.content blockquote{background-color:#f5f5f5;border-left:5px solid #dbdbdb;padding:1.25em 1.5em}.content ol{list-style-position:outside;margin-left:2em;margin-top:1em}.content ol:not([type]){list-style-type:decimal}.content ol.is-lower-alpha:not([type]){list-style-type:lower-alpha}.content ol.is-lower-roman:not([type]){list-style-type:lower-roman}.content ol.is-upper-alpha:not([type]){list-style-type:upper-alpha}.content ol.is-upper-roman:not([type]){list-style-type:upper-roman}.content ul{list-style:disc outside;margin-left:2em;margin-top:1em}.content ul ul{list-style-type:circle;margin-top:0.5em}.content ul ul ul{list-style-type:square}.content dd{margin-left:2em}.content figure{margin-left:2em;margin-right:2em;text-align:center}.content figure:not(:first-child){margin-top:2em}.content figure:not(:last-child){margin-bottom:2em}.content figure img{display:inline-block}.content figure figcaption{font-style:italic}.content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:0;white-space:pre;word-wrap:normal}.content sup,.content sub{font-size:75%}.content table{width:100%}.content table td,.content table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}.content table th{color:#222}.content table th:not([align]){text-align:inherit}.content table thead td,.content table thead th{border-width:0 0 2px;color:#222}.content table tfoot td,.content table tfoot th{border-width:2px 0 0;color:#222}.content table tbody tr:last-child td,.content table tbody tr:last-child th{border-bottom-width:0}.content .tabs li+li{margin-top:0}.content.is-small,#documenter .docs-sidebar form.docs-search>input.content{font-size:.75rem}.content.is-normal{font-size:1rem}.content.is-medium{font-size:1.25rem}.content.is-large{font-size:1.5rem}.icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}.icon.is-small,#documenter .docs-sidebar form.docs-search>input.icon{height:1rem;width:1rem}.icon.is-medium{height:2rem;width:2rem}.icon.is-large{height:3rem;width:3rem}.icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}.icon-text .icon{flex-grow:0;flex-shrink:0}.icon-text .icon:not(:last-child){margin-right:.25em}.icon-text .icon:not(:first-child){margin-left:.25em}div.icon-text{display:flex}.image,#documenter .docs-sidebar .docs-logo>img{display:block;position:relative}.image img,#documenter .docs-sidebar .docs-logo>img img{display:block;height:auto;width:100%}.image img.is-rounded,#documenter .docs-sidebar .docs-logo>img img.is-rounded{border-radius:9999px}.image.is-fullwidth,#documenter .docs-sidebar .docs-logo>img.is-fullwidth{width:100%}.image.is-square img,#documenter .docs-sidebar .docs-logo>img.is-square img,.image.is-square .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-square .has-ratio,.image.is-1by1 img,#documenter .docs-sidebar .docs-logo>img.is-1by1 img,.image.is-1by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by1 .has-ratio,.image.is-5by4 img,#documenter .docs-sidebar .docs-logo>img.is-5by4 img,.image.is-5by4 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-5by4 .has-ratio,.image.is-4by3 img,#documenter .docs-sidebar .docs-logo>img.is-4by3 img,.image.is-4by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-4by3 .has-ratio,.image.is-3by2 img,#documenter .docs-sidebar .docs-logo>img.is-3by2 img,.image.is-3by2 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by2 .has-ratio,.image.is-5by3 img,#documenter .docs-sidebar .docs-logo>img.is-5by3 img,.image.is-5by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-5by3 .has-ratio,.image.is-16by9 img,#documenter .docs-sidebar .docs-logo>img.is-16by9 img,.image.is-16by9 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-16by9 .has-ratio,.image.is-2by1 img,#documenter .docs-sidebar .docs-logo>img.is-2by1 img,.image.is-2by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-2by1 .has-ratio,.image.is-3by1 img,#documenter .docs-sidebar .docs-logo>img.is-3by1 img,.image.is-3by1 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by1 .has-ratio,.image.is-4by5 img,#documenter .docs-sidebar .docs-logo>img.is-4by5 img,.image.is-4by5 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-4by5 .has-ratio,.image.is-3by4 img,#documenter .docs-sidebar .docs-logo>img.is-3by4 img,.image.is-3by4 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by4 .has-ratio,.image.is-2by3 img,#documenter .docs-sidebar .docs-logo>img.is-2by3 img,.image.is-2by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-2by3 .has-ratio,.image.is-3by5 img,#documenter .docs-sidebar .docs-logo>img.is-3by5 img,.image.is-3by5 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-3by5 .has-ratio,.image.is-9by16 img,#documenter .docs-sidebar .docs-logo>img.is-9by16 img,.image.is-9by16 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-9by16 .has-ratio,.image.is-1by2 img,#documenter .docs-sidebar .docs-logo>img.is-1by2 img,.image.is-1by2 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by2 .has-ratio,.image.is-1by3 img,#documenter .docs-sidebar .docs-logo>img.is-1by3 img,.image.is-1by3 .has-ratio,#documenter .docs-sidebar .docs-logo>img.is-1by3 .has-ratio{height:100%;width:100%}.image.is-square,#documenter .docs-sidebar .docs-logo>img.is-square,.image.is-1by1,#documenter .docs-sidebar .docs-logo>img.is-1by1{padding-top:100%}.image.is-5by4,#documenter .docs-sidebar .docs-logo>img.is-5by4{padding-top:80%}.image.is-4by3,#documenter .docs-sidebar .docs-logo>img.is-4by3{padding-top:75%}.image.is-3by2,#documenter .docs-sidebar .docs-logo>img.is-3by2{padding-top:66.6666%}.image.is-5by3,#documenter .docs-sidebar .docs-logo>img.is-5by3{padding-top:60%}.image.is-16by9,#documenter .docs-sidebar .docs-logo>img.is-16by9{padding-top:56.25%}.image.is-2by1,#documenter .docs-sidebar .docs-logo>img.is-2by1{padding-top:50%}.image.is-3by1,#documenter .docs-sidebar .docs-logo>img.is-3by1{padding-top:33.3333%}.image.is-4by5,#documenter .docs-sidebar .docs-logo>img.is-4by5{padding-top:125%}.image.is-3by4,#documenter .docs-sidebar .docs-logo>img.is-3by4{padding-top:133.3333%}.image.is-2by3,#documenter .docs-sidebar .docs-logo>img.is-2by3{padding-top:150%}.image.is-3by5,#documenter .docs-sidebar .docs-logo>img.is-3by5{padding-top:166.6666%}.image.is-9by16,#documenter .docs-sidebar .docs-logo>img.is-9by16{padding-top:177.7777%}.image.is-1by2,#documenter .docs-sidebar .docs-logo>img.is-1by2{padding-top:200%}.image.is-1by3,#documenter .docs-sidebar .docs-logo>img.is-1by3{padding-top:300%}.image.is-16x16,#documenter .docs-sidebar .docs-logo>img.is-16x16{height:16px;width:16px}.image.is-24x24,#documenter .docs-sidebar .docs-logo>img.is-24x24{height:24px;width:24px}.image.is-32x32,#documenter .docs-sidebar .docs-logo>img.is-32x32{height:32px;width:32px}.image.is-48x48,#documenter .docs-sidebar .docs-logo>img.is-48x48{height:48px;width:48px}.image.is-64x64,#documenter .docs-sidebar .docs-logo>img.is-64x64{height:64px;width:64px}.image.is-96x96,#documenter .docs-sidebar .docs-logo>img.is-96x96{height:96px;width:96px}.image.is-128x128,#documenter .docs-sidebar .docs-logo>img.is-128x128{height:128px;width:128px}.notification{background-color:#f5f5f5;border-radius:4px;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}.notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}.notification strong{color:currentColor}.notification code,.notification pre{background:#fff}.notification pre code{background:transparent}.notification>.delete{right:.5rem;position:absolute;top:0.5rem}.notification .title,.notification .subtitle,.notification .content{color:currentColor}.notification.is-white{background-color:#fff;color:#0a0a0a}.notification.is-black{background-color:#0a0a0a;color:#fff}.notification.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.notification.is-dark,.content kbd.notification{background-color:#363636;color:#fff}.notification.is-primary,.docstring>section>a.notification.docs-sourcelink{background-color:#4eb5de;color:#fff}.notification.is-primary.is-light,.docstring>section>a.notification.is-light.docs-sourcelink{background-color:#eef8fc;color:#1a6d8e}.notification.is-link{background-color:#2e63b8;color:#fff}.notification.is-link.is-light{background-color:#eff3fb;color:#3169c4}.notification.is-info{background-color:#209cee;color:#fff}.notification.is-info.is-light{background-color:#ecf7fe;color:#0e72b4}.notification.is-success{background-color:#22c35b;color:#fff}.notification.is-success.is-light{background-color:#eefcf3;color:#198f43}.notification.is-warning{background-color:#ffdd57;color:rgba(0,0,0,0.7)}.notification.is-warning.is-light{background-color:#fffbeb;color:#947600}.notification.is-danger{background-color:#da0b00;color:#fff}.notification.is-danger.is-light{background-color:#ffeceb;color:#f50c00}.progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:9999px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}.progress::-webkit-progress-bar{background-color:#ededed}.progress::-webkit-progress-value{background-color:#222}.progress::-moz-progress-bar{background-color:#222}.progress::-ms-fill{background-color:#222;border:none}.progress.is-white::-webkit-progress-value{background-color:#fff}.progress.is-white::-moz-progress-bar{background-color:#fff}.progress.is-white::-ms-fill{background-color:#fff}.progress.is-white:indeterminate{background-image:linear-gradient(to right, #fff 30%, #ededed 30%)}.progress.is-black::-webkit-progress-value{background-color:#0a0a0a}.progress.is-black::-moz-progress-bar{background-color:#0a0a0a}.progress.is-black::-ms-fill{background-color:#0a0a0a}.progress.is-black:indeterminate{background-image:linear-gradient(to right, #0a0a0a 30%, #ededed 30%)}.progress.is-light::-webkit-progress-value{background-color:#f5f5f5}.progress.is-light::-moz-progress-bar{background-color:#f5f5f5}.progress.is-light::-ms-fill{background-color:#f5f5f5}.progress.is-light:indeterminate{background-image:linear-gradient(to right, #f5f5f5 30%, #ededed 30%)}.progress.is-dark::-webkit-progress-value,.content kbd.progress::-webkit-progress-value{background-color:#363636}.progress.is-dark::-moz-progress-bar,.content kbd.progress::-moz-progress-bar{background-color:#363636}.progress.is-dark::-ms-fill,.content kbd.progress::-ms-fill{background-color:#363636}.progress.is-dark:indeterminate,.content kbd.progress:indeterminate{background-image:linear-gradient(to right, #363636 30%, #ededed 30%)}.progress.is-primary::-webkit-progress-value,.docstring>section>a.progress.docs-sourcelink::-webkit-progress-value{background-color:#4eb5de}.progress.is-primary::-moz-progress-bar,.docstring>section>a.progress.docs-sourcelink::-moz-progress-bar{background-color:#4eb5de}.progress.is-primary::-ms-fill,.docstring>section>a.progress.docs-sourcelink::-ms-fill{background-color:#4eb5de}.progress.is-primary:indeterminate,.docstring>section>a.progress.docs-sourcelink:indeterminate{background-image:linear-gradient(to right, #4eb5de 30%, #ededed 30%)}.progress.is-link::-webkit-progress-value{background-color:#2e63b8}.progress.is-link::-moz-progress-bar{background-color:#2e63b8}.progress.is-link::-ms-fill{background-color:#2e63b8}.progress.is-link:indeterminate{background-image:linear-gradient(to right, #2e63b8 30%, #ededed 30%)}.progress.is-info::-webkit-progress-value{background-color:#209cee}.progress.is-info::-moz-progress-bar{background-color:#209cee}.progress.is-info::-ms-fill{background-color:#209cee}.progress.is-info:indeterminate{background-image:linear-gradient(to right, #209cee 30%, #ededed 30%)}.progress.is-success::-webkit-progress-value{background-color:#22c35b}.progress.is-success::-moz-progress-bar{background-color:#22c35b}.progress.is-success::-ms-fill{background-color:#22c35b}.progress.is-success:indeterminate{background-image:linear-gradient(to right, #22c35b 30%, #ededed 30%)}.progress.is-warning::-webkit-progress-value{background-color:#ffdd57}.progress.is-warning::-moz-progress-bar{background-color:#ffdd57}.progress.is-warning::-ms-fill{background-color:#ffdd57}.progress.is-warning:indeterminate{background-image:linear-gradient(to right, #ffdd57 30%, #ededed 30%)}.progress.is-danger::-webkit-progress-value{background-color:#da0b00}.progress.is-danger::-moz-progress-bar{background-color:#da0b00}.progress.is-danger::-ms-fill{background-color:#da0b00}.progress.is-danger:indeterminate{background-image:linear-gradient(to right, #da0b00 30%, #ededed 30%)}.progress:indeterminate{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:moveIndeterminate;animation-timing-function:linear;background-color:#ededed;background-image:linear-gradient(to right, #222 30%, #ededed 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}.progress:indeterminate::-webkit-progress-bar{background-color:transparent}.progress:indeterminate::-moz-progress-bar{background-color:transparent}.progress:indeterminate::-ms-fill{animation-name:none}.progress.is-small,#documenter .docs-sidebar form.docs-search>input.progress{height:.75rem}.progress.is-medium{height:1.25rem}.progress.is-large{height:1.5rem}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}.table{background-color:#fff;color:#222}.table td,.table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:0.5em 0.75em;vertical-align:top}.table td.is-white,.table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}.table td.is-black,.table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.table td.is-light,.table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,0.7)}.table td.is-dark,.table th.is-dark{background-color:#363636;border-color:#363636;color:#fff}.table td.is-primary,.table th.is-primary{background-color:#4eb5de;border-color:#4eb5de;color:#fff}.table td.is-link,.table th.is-link{background-color:#2e63b8;border-color:#2e63b8;color:#fff}.table td.is-info,.table th.is-info{background-color:#209cee;border-color:#209cee;color:#fff}.table td.is-success,.table th.is-success{background-color:#22c35b;border-color:#22c35b;color:#fff}.table td.is-warning,.table th.is-warning{background-color:#ffdd57;border-color:#ffdd57;color:rgba(0,0,0,0.7)}.table td.is-danger,.table th.is-danger{background-color:#da0b00;border-color:#da0b00;color:#fff}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table td.is-selected,.table th.is-selected{background-color:#4eb5de;color:#fff}.table td.is-selected a,.table td.is-selected strong,.table th.is-selected a,.table th.is-selected strong{color:currentColor}.table td.is-vcentered,.table th.is-vcentered{vertical-align:middle}.table th{color:#222}.table th:not([align]){text-align:left}.table tr.is-selected{background-color:#4eb5de;color:#fff}.table tr.is-selected a,.table tr.is-selected strong{color:currentColor}.table tr.is-selected td,.table tr.is-selected th{border-color:#fff;color:currentColor}.table thead{background-color:rgba(0,0,0,0)}.table thead td,.table thead th{border-width:0 0 2px;color:#222}.table tfoot{background-color:rgba(0,0,0,0)}.table tfoot td,.table tfoot th{border-width:2px 0 0;color:#222}.table tbody{background-color:rgba(0,0,0,0)}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.table.is-bordered td,.table.is-bordered th{border-width:1px}.table.is-bordered tr:last-child td,.table.is-bordered tr:last-child th{border-bottom-width:1px}.table.is-fullwidth{width:100%}.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even){background-color:#f5f5f5}.table.is-narrow td,.table.is-narrow th{padding:0.25em 0.5em}.table.is-striped tbody tr:not(.is-selected):nth-child(even){background-color:#fafafa}.table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}.tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.tags .tag,.tags .content kbd,.content .tags kbd,.tags .docstring>section>a.docs-sourcelink{margin-bottom:0.5rem}.tags .tag:not(:last-child),.tags .content kbd:not(:last-child),.content .tags kbd:not(:last-child),.tags .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:.5rem}.tags:last-child{margin-bottom:-0.5rem}.tags:not(:last-child){margin-bottom:1rem}.tags.are-medium .tag:not(.is-normal):not(.is-large),.tags.are-medium .content kbd:not(.is-normal):not(.is-large),.content .tags.are-medium kbd:not(.is-normal):not(.is-large),.tags.are-medium .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-large){font-size:1rem}.tags.are-large .tag:not(.is-normal):not(.is-medium),.tags.are-large .content kbd:not(.is-normal):not(.is-medium),.content .tags.are-large kbd:not(.is-normal):not(.is-medium),.tags.are-large .docstring>section>a.docs-sourcelink:not(.is-normal):not(.is-medium){font-size:1.25rem}.tags.is-centered{justify-content:center}.tags.is-centered .tag,.tags.is-centered .content kbd,.content .tags.is-centered kbd,.tags.is-centered .docstring>section>a.docs-sourcelink{margin-right:0.25rem;margin-left:0.25rem}.tags.is-right{justify-content:flex-end}.tags.is-right .tag:not(:first-child),.tags.is-right .content kbd:not(:first-child),.content .tags.is-right kbd:not(:first-child),.tags.is-right .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0.5rem}.tags.is-right .tag:not(:last-child),.tags.is-right .content kbd:not(:last-child),.content .tags.is-right kbd:not(:last-child),.tags.is-right .docstring>section>a.docs-sourcelink:not(:last-child){margin-right:0}.tags.has-addons .tag,.tags.has-addons .content kbd,.content .tags.has-addons kbd,.tags.has-addons .docstring>section>a.docs-sourcelink{margin-right:0}.tags.has-addons .tag:not(:first-child),.tags.has-addons .content kbd:not(:first-child),.content .tags.has-addons kbd:not(:first-child),.tags.has-addons .docstring>section>a.docs-sourcelink:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.tags.has-addons .tag:not(:last-child),.tags.has-addons .content kbd:not(:last-child),.content .tags.has-addons kbd:not(:last-child),.tags.has-addons .docstring>section>a.docs-sourcelink:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.tag:not(body),.content kbd:not(body),.docstring>section>a.docs-sourcelink:not(body){align-items:center;background-color:#f5f5f5;border-radius:4px;color:#222;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:0.75em;padding-right:0.75em;white-space:nowrap}.tag:not(body) .delete,.content kbd:not(body) .delete,.docstring>section>a.docs-sourcelink:not(body) .delete{margin-left:.25rem;margin-right:-.375rem}.tag.is-white:not(body),.content kbd.is-white:not(body),.docstring>section>a.docs-sourcelink.is-white:not(body){background-color:#fff;color:#0a0a0a}.tag.is-black:not(body),.content kbd.is-black:not(body),.docstring>section>a.docs-sourcelink.is-black:not(body){background-color:#0a0a0a;color:#fff}.tag.is-light:not(body),.content kbd.is-light:not(body),.docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.tag.is-dark:not(body),.content kbd:not(body),.docstring>section>a.docs-sourcelink.is-dark:not(body),.content .docstring>section>kbd:not(body){background-color:#363636;color:#fff}.tag.is-primary:not(body),.content kbd.is-primary:not(body),.docstring>section>a.docs-sourcelink:not(body){background-color:#4eb5de;color:#fff}.tag.is-primary.is-light:not(body),.content kbd.is-primary.is-light:not(body),.docstring>section>a.docs-sourcelink.is-light:not(body){background-color:#eef8fc;color:#1a6d8e}.tag.is-link:not(body),.content kbd.is-link:not(body),.docstring>section>a.docs-sourcelink.is-link:not(body){background-color:#2e63b8;color:#fff}.tag.is-link.is-light:not(body),.content kbd.is-link.is-light:not(body),.docstring>section>a.docs-sourcelink.is-link.is-light:not(body){background-color:#eff3fb;color:#3169c4}.tag.is-info:not(body),.content kbd.is-info:not(body),.docstring>section>a.docs-sourcelink.is-info:not(body){background-color:#209cee;color:#fff}.tag.is-info.is-light:not(body),.content kbd.is-info.is-light:not(body),.docstring>section>a.docs-sourcelink.is-info.is-light:not(body){background-color:#ecf7fe;color:#0e72b4}.tag.is-success:not(body),.content kbd.is-success:not(body),.docstring>section>a.docs-sourcelink.is-success:not(body){background-color:#22c35b;color:#fff}.tag.is-success.is-light:not(body),.content kbd.is-success.is-light:not(body),.docstring>section>a.docs-sourcelink.is-success.is-light:not(body){background-color:#eefcf3;color:#198f43}.tag.is-warning:not(body),.content kbd.is-warning:not(body),.docstring>section>a.docs-sourcelink.is-warning:not(body){background-color:#ffdd57;color:rgba(0,0,0,0.7)}.tag.is-warning.is-light:not(body),.content kbd.is-warning.is-light:not(body),.docstring>section>a.docs-sourcelink.is-warning.is-light:not(body){background-color:#fffbeb;color:#947600}.tag.is-danger:not(body),.content kbd.is-danger:not(body),.docstring>section>a.docs-sourcelink.is-danger:not(body){background-color:#da0b00;color:#fff}.tag.is-danger.is-light:not(body),.content kbd.is-danger.is-light:not(body),.docstring>section>a.docs-sourcelink.is-danger.is-light:not(body){background-color:#ffeceb;color:#f50c00}.tag.is-normal:not(body),.content kbd.is-normal:not(body),.docstring>section>a.docs-sourcelink.is-normal:not(body){font-size:.75rem}.tag.is-medium:not(body),.content kbd.is-medium:not(body),.docstring>section>a.docs-sourcelink.is-medium:not(body){font-size:1rem}.tag.is-large:not(body),.content kbd.is-large:not(body),.docstring>section>a.docs-sourcelink.is-large:not(body){font-size:1.25rem}.tag:not(body) .icon:first-child:not(:last-child),.content kbd:not(body) .icon:first-child:not(:last-child),.docstring>section>a.docs-sourcelink:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}.tag:not(body) .icon:last-child:not(:first-child),.content kbd:not(body) .icon:last-child:not(:first-child),.docstring>section>a.docs-sourcelink:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}.tag:not(body) .icon:first-child:last-child,.content kbd:not(body) .icon:first-child:last-child,.docstring>section>a.docs-sourcelink:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}.tag.is-delete:not(body),.content kbd.is-delete:not(body),.docstring>section>a.docs-sourcelink.is-delete:not(body){margin-left:1px;padding:0;position:relative;width:2em}.tag.is-delete:not(body)::before,.content kbd.is-delete:not(body)::before,.docstring>section>a.docs-sourcelink.is-delete:not(body)::before,.tag.is-delete:not(body)::after,.content kbd.is-delete:not(body)::after,.docstring>section>a.docs-sourcelink.is-delete:not(body)::after{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.tag.is-delete:not(body)::before,.content kbd.is-delete:not(body)::before,.docstring>section>a.docs-sourcelink.is-delete:not(body)::before{height:1px;width:50%}.tag.is-delete:not(body)::after,.content kbd.is-delete:not(body)::after,.docstring>section>a.docs-sourcelink.is-delete:not(body)::after{height:50%;width:1px}.tag.is-delete:not(body):hover,.content kbd.is-delete:not(body):hover,.docstring>section>a.docs-sourcelink.is-delete:not(body):hover,.tag.is-delete:not(body):focus,.content kbd.is-delete:not(body):focus,.docstring>section>a.docs-sourcelink.is-delete:not(body):focus{background-color:#e8e8e8}.tag.is-delete:not(body):active,.content kbd.is-delete:not(body):active,.docstring>section>a.docs-sourcelink.is-delete:not(body):active{background-color:#dbdbdb}.tag.is-rounded:not(body),#documenter .docs-sidebar form.docs-search>input:not(body),.content kbd.is-rounded:not(body),#documenter .docs-sidebar .content form.docs-search>input:not(body),.docstring>section>a.docs-sourcelink.is-rounded:not(body){border-radius:9999px}a.tag:hover,.docstring>section>a.docs-sourcelink:hover{text-decoration:underline}.title,.subtitle{word-break:break-word}.title em,.title span,.subtitle em,.subtitle span{font-weight:inherit}.title sub,.subtitle sub{font-size:.75em}.title sup,.subtitle sup{font-size:.75em}.title .tag,.title .content kbd,.content .title kbd,.title .docstring>section>a.docs-sourcelink,.subtitle .tag,.subtitle .content kbd,.content .subtitle kbd,.subtitle .docstring>section>a.docs-sourcelink{vertical-align:middle}.title{color:#222;font-size:2rem;font-weight:600;line-height:1.125}.title strong{color:inherit;font-weight:inherit}.title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}.title.is-1{font-size:3rem}.title.is-2{font-size:2.5rem}.title.is-3{font-size:2rem}.title.is-4{font-size:1.5rem}.title.is-5{font-size:1.25rem}.title.is-6{font-size:1rem}.title.is-7{font-size:.75rem}.subtitle{color:#222;font-size:1.25rem;font-weight:400;line-height:1.25}.subtitle strong{color:#222;font-weight:600}.subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}.subtitle.is-1{font-size:3rem}.subtitle.is-2{font-size:2.5rem}.subtitle.is-3{font-size:2rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-5{font-size:1.25rem}.subtitle.is-6{font-size:1rem}.subtitle.is-7{font-size:.75rem}.heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}.number{align-items:center;background-color:#f5f5f5;border-radius:9999px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:0.25rem 0.5rem;text-align:center;vertical-align:top}.select select,.textarea,.input,#documenter .docs-sidebar form.docs-search>input{background-color:#fff;border-color:#dbdbdb;border-radius:4px;color:#222}.select select::-moz-placeholder,.textarea::-moz-placeholder,.input::-moz-placeholder,#documenter .docs-sidebar form.docs-search>input::-moz-placeholder{color:#707070}.select select::-webkit-input-placeholder,.textarea::-webkit-input-placeholder,.input::-webkit-input-placeholder,#documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder{color:#707070}.select select:-moz-placeholder,.textarea:-moz-placeholder,.input:-moz-placeholder,#documenter .docs-sidebar form.docs-search>input:-moz-placeholder{color:#707070}.select select:-ms-input-placeholder,.textarea:-ms-input-placeholder,.input:-ms-input-placeholder,#documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder{color:#707070}.select select:hover,.textarea:hover,.input:hover,#documenter .docs-sidebar form.docs-search>input:hover,.select select.is-hovered,.is-hovered.textarea,.is-hovered.input,#documenter .docs-sidebar form.docs-search>input.is-hovered{border-color:#b5b5b5}.select select:focus,.textarea:focus,.input:focus,#documenter .docs-sidebar form.docs-search>input:focus,.select select.is-focused,.is-focused.textarea,.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.select select:active,.textarea:active,.input:active,#documenter .docs-sidebar form.docs-search>input:active,.select select.is-active,.is-active.textarea,.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{border-color:#2e63b8;box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.select select[disabled],.textarea[disabled],.input[disabled],#documenter .docs-sidebar form.docs-search>input[disabled],fieldset[disabled] .select select,.select fieldset[disabled] select,fieldset[disabled] .textarea,fieldset[disabled] .input,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none;color:#6b6b6b}.select select[disabled]::-moz-placeholder,.textarea[disabled]::-moz-placeholder,.input[disabled]::-moz-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]::-moz-placeholder,fieldset[disabled] .select select::-moz-placeholder,.select fieldset[disabled] select::-moz-placeholder,fieldset[disabled] .textarea::-moz-placeholder,fieldset[disabled] .input::-moz-placeholder,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input::-moz-placeholder,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input::-moz-placeholder{color:rgba(107,107,107,0.3)}.select select[disabled]::-webkit-input-placeholder,.textarea[disabled]::-webkit-input-placeholder,.input[disabled]::-webkit-input-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]::-webkit-input-placeholder,fieldset[disabled] .select select::-webkit-input-placeholder,.select fieldset[disabled] select::-webkit-input-placeholder,fieldset[disabled] .textarea::-webkit-input-placeholder,fieldset[disabled] .input::-webkit-input-placeholder,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input::-webkit-input-placeholder,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input::-webkit-input-placeholder{color:rgba(107,107,107,0.3)}.select select[disabled]:-moz-placeholder,.textarea[disabled]:-moz-placeholder,.input[disabled]:-moz-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]:-moz-placeholder,fieldset[disabled] .select select:-moz-placeholder,.select fieldset[disabled] select:-moz-placeholder,fieldset[disabled] .textarea:-moz-placeholder,fieldset[disabled] .input:-moz-placeholder,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input:-moz-placeholder,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input:-moz-placeholder{color:rgba(107,107,107,0.3)}.select select[disabled]:-ms-input-placeholder,.textarea[disabled]:-ms-input-placeholder,.input[disabled]:-ms-input-placeholder,#documenter .docs-sidebar form.docs-search>input[disabled]:-ms-input-placeholder,fieldset[disabled] .select select:-ms-input-placeholder,.select fieldset[disabled] select:-ms-input-placeholder,fieldset[disabled] .textarea:-ms-input-placeholder,fieldset[disabled] .input:-ms-input-placeholder,fieldset[disabled] #documenter .docs-sidebar form.docs-search>input:-ms-input-placeholder,#documenter .docs-sidebar fieldset[disabled] form.docs-search>input:-ms-input-placeholder{color:rgba(107,107,107,0.3)}.textarea,.input,#documenter .docs-sidebar form.docs-search>input{box-shadow:inset 0 0.0625em 0.125em rgba(10,10,10,0.05);max-width:100%;width:100%}.textarea[readonly],.input[readonly],#documenter .docs-sidebar form.docs-search>input[readonly]{box-shadow:none}.is-white.textarea,.is-white.input,#documenter .docs-sidebar form.docs-search>input.is-white{border-color:#fff}.is-white.textarea:focus,.is-white.input:focus,#documenter .docs-sidebar form.docs-search>input.is-white:focus,.is-white.is-focused.textarea,.is-white.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-white.textarea:active,.is-white.input:active,#documenter .docs-sidebar form.docs-search>input.is-white:active,.is-white.is-active.textarea,.is-white.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}.is-black.textarea,.is-black.input,#documenter .docs-sidebar form.docs-search>input.is-black{border-color:#0a0a0a}.is-black.textarea:focus,.is-black.input:focus,#documenter .docs-sidebar form.docs-search>input.is-black:focus,.is-black.is-focused.textarea,.is-black.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-black.textarea:active,.is-black.input:active,#documenter .docs-sidebar form.docs-search>input.is-black:active,.is-black.is-active.textarea,.is-black.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}.is-light.textarea,.is-light.input,#documenter .docs-sidebar form.docs-search>input.is-light{border-color:#f5f5f5}.is-light.textarea:focus,.is-light.input:focus,#documenter .docs-sidebar form.docs-search>input.is-light:focus,.is-light.is-focused.textarea,.is-light.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-light.textarea:active,.is-light.input:active,#documenter .docs-sidebar form.docs-search>input.is-light:active,.is-light.is-active.textarea,.is-light.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}.is-dark.textarea,.content kbd.textarea,.is-dark.input,#documenter .docs-sidebar form.docs-search>input.is-dark,.content kbd.input{border-color:#363636}.is-dark.textarea:focus,.content kbd.textarea:focus,.is-dark.input:focus,#documenter .docs-sidebar form.docs-search>input.is-dark:focus,.content kbd.input:focus,.is-dark.is-focused.textarea,.content kbd.is-focused.textarea,.is-dark.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.content kbd.is-focused.input,#documenter .docs-sidebar .content form.docs-search>input.is-focused,.is-dark.textarea:active,.content kbd.textarea:active,.is-dark.input:active,#documenter .docs-sidebar form.docs-search>input.is-dark:active,.content kbd.input:active,.is-dark.is-active.textarea,.content kbd.is-active.textarea,.is-dark.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active,.content kbd.is-active.input,#documenter .docs-sidebar .content form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(54,54,54,0.25)}.is-primary.textarea,.docstring>section>a.textarea.docs-sourcelink,.is-primary.input,#documenter .docs-sidebar form.docs-search>input.is-primary,.docstring>section>a.input.docs-sourcelink{border-color:#4eb5de}.is-primary.textarea:focus,.docstring>section>a.textarea.docs-sourcelink:focus,.is-primary.input:focus,#documenter .docs-sidebar form.docs-search>input.is-primary:focus,.docstring>section>a.input.docs-sourcelink:focus,.is-primary.is-focused.textarea,.docstring>section>a.is-focused.textarea.docs-sourcelink,.is-primary.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.docstring>section>a.is-focused.input.docs-sourcelink,.is-primary.textarea:active,.docstring>section>a.textarea.docs-sourcelink:active,.is-primary.input:active,#documenter .docs-sidebar form.docs-search>input.is-primary:active,.docstring>section>a.input.docs-sourcelink:active,.is-primary.is-active.textarea,.docstring>section>a.is-active.textarea.docs-sourcelink,.is-primary.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active,.docstring>section>a.is-active.input.docs-sourcelink{box-shadow:0 0 0 0.125em rgba(78,181,222,0.25)}.is-link.textarea,.is-link.input,#documenter .docs-sidebar form.docs-search>input.is-link{border-color:#2e63b8}.is-link.textarea:focus,.is-link.input:focus,#documenter .docs-sidebar form.docs-search>input.is-link:focus,.is-link.is-focused.textarea,.is-link.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-link.textarea:active,.is-link.input:active,#documenter .docs-sidebar form.docs-search>input.is-link:active,.is-link.is-active.textarea,.is-link.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.is-info.textarea,.is-info.input,#documenter .docs-sidebar form.docs-search>input.is-info{border-color:#209cee}.is-info.textarea:focus,.is-info.input:focus,#documenter .docs-sidebar form.docs-search>input.is-info:focus,.is-info.is-focused.textarea,.is-info.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-info.textarea:active,.is-info.input:active,#documenter .docs-sidebar form.docs-search>input.is-info:active,.is-info.is-active.textarea,.is-info.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(32,156,238,0.25)}.is-success.textarea,.is-success.input,#documenter .docs-sidebar form.docs-search>input.is-success{border-color:#22c35b}.is-success.textarea:focus,.is-success.input:focus,#documenter .docs-sidebar form.docs-search>input.is-success:focus,.is-success.is-focused.textarea,.is-success.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-success.textarea:active,.is-success.input:active,#documenter .docs-sidebar form.docs-search>input.is-success:active,.is-success.is-active.textarea,.is-success.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(34,195,91,0.25)}.is-warning.textarea,.is-warning.input,#documenter .docs-sidebar form.docs-search>input.is-warning{border-color:#ffdd57}.is-warning.textarea:focus,.is-warning.input:focus,#documenter .docs-sidebar form.docs-search>input.is-warning:focus,.is-warning.is-focused.textarea,.is-warning.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-warning.textarea:active,.is-warning.input:active,#documenter .docs-sidebar form.docs-search>input.is-warning:active,.is-warning.is-active.textarea,.is-warning.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(255,221,87,0.25)}.is-danger.textarea,.is-danger.input,#documenter .docs-sidebar form.docs-search>input.is-danger{border-color:#da0b00}.is-danger.textarea:focus,.is-danger.input:focus,#documenter .docs-sidebar form.docs-search>input.is-danger:focus,.is-danger.is-focused.textarea,.is-danger.is-focused.input,#documenter .docs-sidebar form.docs-search>input.is-focused,.is-danger.textarea:active,.is-danger.input:active,#documenter .docs-sidebar form.docs-search>input.is-danger:active,.is-danger.is-active.textarea,.is-danger.is-active.input,#documenter .docs-sidebar form.docs-search>input.is-active{box-shadow:0 0 0 0.125em rgba(218,11,0,0.25)}.is-small.textarea,.is-small.input,#documenter .docs-sidebar form.docs-search>input{border-radius:2px;font-size:.75rem}.is-medium.textarea,.is-medium.input,#documenter .docs-sidebar form.docs-search>input.is-medium{font-size:1.25rem}.is-large.textarea,.is-large.input,#documenter .docs-sidebar form.docs-search>input.is-large{font-size:1.5rem}.is-fullwidth.textarea,.is-fullwidth.input,#documenter .docs-sidebar form.docs-search>input.is-fullwidth{display:block;width:100%}.is-inline.textarea,.is-inline.input,#documenter .docs-sidebar form.docs-search>input.is-inline{display:inline;width:auto}.input.is-rounded,#documenter .docs-sidebar form.docs-search>input{border-radius:9999px;padding-left:calc(calc(0.75em - 1px) + 0.375em);padding-right:calc(calc(0.75em - 1px) + 0.375em)}.input.is-static,#documenter .docs-sidebar form.docs-search>input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}.textarea{display:block;max-width:100%;min-width:100%;padding:calc(0.75em - 1px);resize:vertical}.textarea:not([rows]){max-height:40em;min-height:8em}.textarea[rows]{height:initial}.textarea.has-fixed-size{resize:none}.radio,.checkbox{cursor:pointer;display:inline-block;line-height:1.25;position:relative}.radio input,.checkbox input{cursor:pointer}.radio:hover,.checkbox:hover{color:#222}.radio[disabled],.checkbox[disabled],fieldset[disabled] .radio,fieldset[disabled] .checkbox,.radio input[disabled],.checkbox input[disabled]{color:#6b6b6b;cursor:not-allowed}.radio+.radio{margin-left:.5em}.select{display:inline-block;max-width:100%;position:relative;vertical-align:top}.select:not(.is-multiple){height:2.5em}.select:not(.is-multiple):not(.is-loading)::after{border-color:#2e63b8;right:1.125em;z-index:4}.select.is-rounded select,#documenter .docs-sidebar form.docs-search>input.select select{border-radius:9999px;padding-left:1em}.select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:none}.select select::-ms-expand{display:none}.select select[disabled]:hover,fieldset[disabled] .select select:hover{border-color:#f5f5f5}.select select:not([multiple]){padding-right:2.5em}.select select[multiple]{height:auto;padding:0}.select select[multiple] option{padding:0.5em 1em}.select:not(.is-multiple):not(.is-loading):hover::after{border-color:#222}.select.is-white:not(:hover)::after{border-color:#fff}.select.is-white select{border-color:#fff}.select.is-white select:hover,.select.is-white select.is-hovered{border-color:#f2f2f2}.select.is-white select:focus,.select.is-white select.is-focused,.select.is-white select:active,.select.is-white select.is-active{box-shadow:0 0 0 0.125em rgba(255,255,255,0.25)}.select.is-black:not(:hover)::after{border-color:#0a0a0a}.select.is-black select{border-color:#0a0a0a}.select.is-black select:hover,.select.is-black select.is-hovered{border-color:#000}.select.is-black select:focus,.select.is-black select.is-focused,.select.is-black select:active,.select.is-black select.is-active{box-shadow:0 0 0 0.125em rgba(10,10,10,0.25)}.select.is-light:not(:hover)::after{border-color:#f5f5f5}.select.is-light select{border-color:#f5f5f5}.select.is-light select:hover,.select.is-light select.is-hovered{border-color:#e8e8e8}.select.is-light select:focus,.select.is-light select.is-focused,.select.is-light select:active,.select.is-light select.is-active{box-shadow:0 0 0 0.125em rgba(245,245,245,0.25)}.select.is-dark:not(:hover)::after,.content kbd.select:not(:hover)::after{border-color:#363636}.select.is-dark select,.content kbd.select select{border-color:#363636}.select.is-dark select:hover,.content kbd.select select:hover,.select.is-dark select.is-hovered,.content kbd.select select.is-hovered{border-color:#292929}.select.is-dark select:focus,.content kbd.select select:focus,.select.is-dark select.is-focused,.content kbd.select select.is-focused,.select.is-dark select:active,.content kbd.select select:active,.select.is-dark select.is-active,.content kbd.select select.is-active{box-shadow:0 0 0 0.125em rgba(54,54,54,0.25)}.select.is-primary:not(:hover)::after,.docstring>section>a.select.docs-sourcelink:not(:hover)::after{border-color:#4eb5de}.select.is-primary select,.docstring>section>a.select.docs-sourcelink select{border-color:#4eb5de}.select.is-primary select:hover,.docstring>section>a.select.docs-sourcelink select:hover,.select.is-primary select.is-hovered,.docstring>section>a.select.docs-sourcelink select.is-hovered{border-color:#39acda}.select.is-primary select:focus,.docstring>section>a.select.docs-sourcelink select:focus,.select.is-primary select.is-focused,.docstring>section>a.select.docs-sourcelink select.is-focused,.select.is-primary select:active,.docstring>section>a.select.docs-sourcelink select:active,.select.is-primary select.is-active,.docstring>section>a.select.docs-sourcelink select.is-active{box-shadow:0 0 0 0.125em rgba(78,181,222,0.25)}.select.is-link:not(:hover)::after{border-color:#2e63b8}.select.is-link select{border-color:#2e63b8}.select.is-link select:hover,.select.is-link select.is-hovered{border-color:#2958a4}.select.is-link select:focus,.select.is-link select.is-focused,.select.is-link select:active,.select.is-link select.is-active{box-shadow:0 0 0 0.125em rgba(46,99,184,0.25)}.select.is-info:not(:hover)::after{border-color:#209cee}.select.is-info select{border-color:#209cee}.select.is-info select:hover,.select.is-info select.is-hovered{border-color:#1190e3}.select.is-info select:focus,.select.is-info select.is-focused,.select.is-info select:active,.select.is-info select.is-active{box-shadow:0 0 0 0.125em rgba(32,156,238,0.25)}.select.is-success:not(:hover)::after{border-color:#22c35b}.select.is-success select{border-color:#22c35b}.select.is-success select:hover,.select.is-success select.is-hovered{border-color:#1ead51}.select.is-success select:focus,.select.is-success select.is-focused,.select.is-success select:active,.select.is-success select.is-active{box-shadow:0 0 0 0.125em rgba(34,195,91,0.25)}.select.is-warning:not(:hover)::after{border-color:#ffdd57}.select.is-warning select{border-color:#ffdd57}.select.is-warning select:hover,.select.is-warning select.is-hovered{border-color:#ffd83e}.select.is-warning select:focus,.select.is-warning select.is-focused,.select.is-warning select:active,.select.is-warning select.is-active{box-shadow:0 0 0 0.125em rgba(255,221,87,0.25)}.select.is-danger:not(:hover)::after{border-color:#da0b00}.select.is-danger select{border-color:#da0b00}.select.is-danger select:hover,.select.is-danger select.is-hovered{border-color:#c10a00}.select.is-danger select:focus,.select.is-danger select.is-focused,.select.is-danger select:active,.select.is-danger select.is-active{box-shadow:0 0 0 0.125em rgba(218,11,0,0.25)}.select.is-small,#documenter .docs-sidebar form.docs-search>input.select{border-radius:2px;font-size:.75rem}.select.is-medium{font-size:1.25rem}.select.is-large{font-size:1.5rem}.select.is-disabled::after{border-color:#6b6b6b !important;opacity:0.5}.select.is-fullwidth{width:100%}.select.is-fullwidth select{width:100%}.select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:0.625em;transform:none}.select.is-loading.is-small:after,#documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}.select.is-loading.is-medium:after{font-size:1.25rem}.select.is-loading.is-large:after{font-size:1.5rem}.file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}.file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}.file.is-white:hover .file-cta,.file.is-white.is-hovered .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.file.is-white:focus .file-cta,.file.is-white.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,255,255,0.25);color:#0a0a0a}.file.is-white:active .file-cta,.file.is-white.is-active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}.file.is-black:hover .file-cta,.file.is-black.is-hovered .file-cta{background-color:#040404;border-color:transparent;color:#fff}.file.is-black:focus .file-cta,.file.is-black.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(10,10,10,0.25);color:#fff}.file.is-black:active .file-cta,.file.is-black.is-active .file-cta{background-color:#000;border-color:transparent;color:#fff}.file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-light:hover .file-cta,.file.is-light.is-hovered .file-cta{background-color:#eee;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-light:focus .file-cta,.file.is-light.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(245,245,245,0.25);color:rgba(0,0,0,0.7)}.file.is-light:active .file-cta,.file.is-light.is-active .file-cta{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-dark .file-cta,.content kbd.file .file-cta{background-color:#363636;border-color:transparent;color:#fff}.file.is-dark:hover .file-cta,.content kbd.file:hover .file-cta,.file.is-dark.is-hovered .file-cta,.content kbd.file.is-hovered .file-cta{background-color:#2f2f2f;border-color:transparent;color:#fff}.file.is-dark:focus .file-cta,.content kbd.file:focus .file-cta,.file.is-dark.is-focused .file-cta,.content kbd.file.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(54,54,54,0.25);color:#fff}.file.is-dark:active .file-cta,.content kbd.file:active .file-cta,.file.is-dark.is-active .file-cta,.content kbd.file.is-active .file-cta{background-color:#292929;border-color:transparent;color:#fff}.file.is-primary .file-cta,.docstring>section>a.file.docs-sourcelink .file-cta{background-color:#4eb5de;border-color:transparent;color:#fff}.file.is-primary:hover .file-cta,.docstring>section>a.file.docs-sourcelink:hover .file-cta,.file.is-primary.is-hovered .file-cta,.docstring>section>a.file.is-hovered.docs-sourcelink .file-cta{background-color:#43b1dc;border-color:transparent;color:#fff}.file.is-primary:focus .file-cta,.docstring>section>a.file.docs-sourcelink:focus .file-cta,.file.is-primary.is-focused .file-cta,.docstring>section>a.file.is-focused.docs-sourcelink .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(78,181,222,0.25);color:#fff}.file.is-primary:active .file-cta,.docstring>section>a.file.docs-sourcelink:active .file-cta,.file.is-primary.is-active .file-cta,.docstring>section>a.file.is-active.docs-sourcelink .file-cta{background-color:#39acda;border-color:transparent;color:#fff}.file.is-link .file-cta{background-color:#2e63b8;border-color:transparent;color:#fff}.file.is-link:hover .file-cta,.file.is-link.is-hovered .file-cta{background-color:#2b5eae;border-color:transparent;color:#fff}.file.is-link:focus .file-cta,.file.is-link.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(46,99,184,0.25);color:#fff}.file.is-link:active .file-cta,.file.is-link.is-active .file-cta{background-color:#2958a4;border-color:transparent;color:#fff}.file.is-info .file-cta{background-color:#209cee;border-color:transparent;color:#fff}.file.is-info:hover .file-cta,.file.is-info.is-hovered .file-cta{background-color:#1497ed;border-color:transparent;color:#fff}.file.is-info:focus .file-cta,.file.is-info.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(32,156,238,0.25);color:#fff}.file.is-info:active .file-cta,.file.is-info.is-active .file-cta{background-color:#1190e3;border-color:transparent;color:#fff}.file.is-success .file-cta{background-color:#22c35b;border-color:transparent;color:#fff}.file.is-success:hover .file-cta,.file.is-success.is-hovered .file-cta{background-color:#20b856;border-color:transparent;color:#fff}.file.is-success:focus .file-cta,.file.is-success.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(34,195,91,0.25);color:#fff}.file.is-success:active .file-cta,.file.is-success.is-active .file-cta{background-color:#1ead51;border-color:transparent;color:#fff}.file.is-warning .file-cta{background-color:#ffdd57;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-warning:hover .file-cta,.file.is-warning.is-hovered .file-cta{background-color:#ffda4a;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-warning:focus .file-cta,.file.is-warning.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(255,221,87,0.25);color:rgba(0,0,0,0.7)}.file.is-warning:active .file-cta,.file.is-warning.is-active .file-cta{background-color:#ffd83e;border-color:transparent;color:rgba(0,0,0,0.7)}.file.is-danger .file-cta{background-color:#da0b00;border-color:transparent;color:#fff}.file.is-danger:hover .file-cta,.file.is-danger.is-hovered .file-cta{background-color:#cd0a00;border-color:transparent;color:#fff}.file.is-danger:focus .file-cta,.file.is-danger.is-focused .file-cta{border-color:transparent;box-shadow:0 0 0.5em rgba(218,11,0,0.25);color:#fff}.file.is-danger:active .file-cta,.file.is-danger.is-active .file-cta{background-color:#c10a00;border-color:transparent;color:#fff}.file.is-small,#documenter .docs-sidebar form.docs-search>input.file{font-size:.75rem}.file.is-normal{font-size:1rem}.file.is-medium{font-size:1.25rem}.file.is-medium .file-icon .fa{font-size:21px}.file.is-large{font-size:1.5rem}.file.is-large .file-icon .fa{font-size:28px}.file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}.file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}.file.has-name.is-empty .file-cta{border-radius:4px}.file.has-name.is-empty .file-name{display:none}.file.is-boxed .file-label{flex-direction:column}.file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}.file.is-boxed .file-name{border-width:0 1px 1px}.file.is-boxed .file-icon{height:1.5em;width:1.5em}.file.is-boxed .file-icon .fa{font-size:21px}.file.is-boxed.is-small .file-icon .fa,#documenter .docs-sidebar form.docs-search>input.is-boxed .file-icon .fa{font-size:14px}.file.is-boxed.is-medium .file-icon .fa{font-size:28px}.file.is-boxed.is-large .file-icon .fa{font-size:35px}.file.is-boxed.has-name .file-cta{border-radius:4px 4px 0 0}.file.is-boxed.has-name .file-name{border-radius:0 0 4px 4px;border-width:0 1px 1px}.file.is-centered{justify-content:center}.file.is-fullwidth .file-label{width:100%}.file.is-fullwidth .file-name{flex-grow:1;max-width:none}.file.is-right{justify-content:flex-end}.file.is-right .file-cta{border-radius:0 4px 4px 0}.file.is-right .file-name{border-radius:4px 0 0 4px;border-width:1px 0 1px 1px;order:-1}.file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}.file-label:hover .file-cta{background-color:#eee;color:#222}.file-label:hover .file-name{border-color:#d5d5d5}.file-label:active .file-cta{background-color:#e8e8e8;color:#222}.file-label:active .file-name{border-color:#cfcfcf}.file-input{height:100%;left:0;opacity:0;outline:none;position:absolute;top:0;width:100%}.file-cta,.file-name{border-color:#dbdbdb;border-radius:4px;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}.file-cta{background-color:#f5f5f5;color:#222}.file-name{border-color:#dbdbdb;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}.file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}.file-icon .fa{font-size:14px}.label{color:#222;display:block;font-size:1rem;font-weight:700}.label:not(:last-child){margin-bottom:0.5em}.label.is-small,#documenter .docs-sidebar form.docs-search>input.label{font-size:.75rem}.label.is-medium{font-size:1.25rem}.label.is-large{font-size:1.5rem}.help{display:block;font-size:.75rem;margin-top:0.25rem}.help.is-white{color:#fff}.help.is-black{color:#0a0a0a}.help.is-light{color:#f5f5f5}.help.is-dark,.content kbd.help{color:#363636}.help.is-primary,.docstring>section>a.help.docs-sourcelink{color:#4eb5de}.help.is-link{color:#2e63b8}.help.is-info{color:#209cee}.help.is-success{color:#22c35b}.help.is-warning{color:#ffdd57}.help.is-danger{color:#da0b00}.field:not(:last-child){margin-bottom:0.75rem}.field.has-addons{display:flex;justify-content:flex-start}.field.has-addons .control:not(:last-child){margin-right:-1px}.field.has-addons .control:not(:first-child):not(:last-child) .button,.field.has-addons .control:not(:first-child):not(:last-child) .input,.field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search>input,.field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}.field.has-addons .control:first-child:not(:only-child) .button,.field.has-addons .control:first-child:not(:only-child) .input,.field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search>input,.field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}.field.has-addons .control:last-child:not(:only-child) .button,.field.has-addons .control:last-child:not(:only-child) .input,.field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search>input,.field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}.field.has-addons .control .button:not([disabled]):hover,.field.has-addons .control .button.is-hovered:not([disabled]),.field.has-addons .control .input:not([disabled]):hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):hover,.field.has-addons .control .input.is-hovered:not([disabled]),.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-hovered:not([disabled]),#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-hovered:not([disabled]),.field.has-addons .control .select select:not([disabled]):hover,.field.has-addons .control .select select.is-hovered:not([disabled]){z-index:2}.field.has-addons .control .button:not([disabled]):focus,.field.has-addons .control .button.is-focused:not([disabled]),.field.has-addons .control .button:not([disabled]):active,.field.has-addons .control .button.is-active:not([disabled]),.field.has-addons .control .input:not([disabled]):focus,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus,.field.has-addons .control .input.is-focused:not([disabled]),.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]),#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]),.field.has-addons .control .input:not([disabled]):active,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active,.field.has-addons .control .input.is-active:not([disabled]),.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]),#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]),.field.has-addons .control .select select:not([disabled]):focus,.field.has-addons .control .select select.is-focused:not([disabled]),.field.has-addons .control .select select:not([disabled]):active,.field.has-addons .control .select select.is-active:not([disabled]){z-index:3}.field.has-addons .control .button:not([disabled]):focus:hover,.field.has-addons .control .button.is-focused:not([disabled]):hover,.field.has-addons .control .button:not([disabled]):active:hover,.field.has-addons .control .button.is-active:not([disabled]):hover,.field.has-addons .control .input:not([disabled]):focus:hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):focus:hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):focus:hover,.field.has-addons .control .input.is-focused:not([disabled]):hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-focused:not([disabled]):hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-focused:not([disabled]):hover,.field.has-addons .control .input:not([disabled]):active:hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input:not([disabled]):active:hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input:not([disabled]):active:hover,.field.has-addons .control .input.is-active:not([disabled]):hover,.field.has-addons .control #documenter .docs-sidebar form.docs-search>input.is-active:not([disabled]):hover,#documenter .docs-sidebar .field.has-addons .control form.docs-search>input.is-active:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]):focus:hover,.field.has-addons .control .select select.is-focused:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]):active:hover,.field.has-addons .control .select select.is-active:not([disabled]):hover{z-index:4}.field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}.field.has-addons.has-addons-centered{justify-content:center}.field.has-addons.has-addons-right{justify-content:flex-end}.field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}.field.is-grouped{display:flex;justify-content:flex-start}.field.is-grouped>.control{flex-shrink:0}.field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}.field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}.field.is-grouped.is-grouped-centered{justify-content:center}.field.is-grouped.is-grouped-right{justify-content:flex-end}.field.is-grouped.is-grouped-multiline{flex-wrap:wrap}.field.is-grouped.is-grouped-multiline>.control:last-child,.field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:0.75rem}.field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-0.75rem}.field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width: 769px),print{.field.is-horizontal{display:flex}}.field-label .label{font-size:inherit}@media screen and (max-width: 768px){.field-label{margin-bottom:0.5rem}}@media screen and (min-width: 769px),print{.field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}.field-label.is-small,#documenter .docs-sidebar form.docs-search>input.field-label{font-size:.75rem;padding-top:0.375em}.field-label.is-normal{padding-top:0.375em}.field-label.is-medium{font-size:1.25rem;padding-top:0.375em}.field-label.is-large{font-size:1.5rem;padding-top:0.375em}}.field-body .field .field{margin-bottom:0}@media screen and (min-width: 769px),print{.field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}.field-body .field{margin-bottom:0}.field-body>.field{flex-shrink:1}.field-body>.field:not(.is-narrow){flex-grow:1}.field-body>.field:not(:last-child){margin-right:.75rem}}.control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}.control.has-icons-left .input:focus~.icon,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input:focus~.icon,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input:focus~.icon,.control.has-icons-left .select:focus~.icon,.control.has-icons-right .input:focus~.icon,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input:focus~.icon,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input:focus~.icon,.control.has-icons-right .select:focus~.icon{color:#222}.control.has-icons-left .input.is-small~.icon,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input~.icon,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input~.icon,.control.has-icons-left .select.is-small~.icon,.control.has-icons-right .input.is-small~.icon,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input~.icon,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input~.icon,.control.has-icons-right .select.is-small~.icon{font-size:.75rem}.control.has-icons-left .input.is-medium~.icon,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-medium~.icon,.control.has-icons-left .select.is-medium~.icon,.control.has-icons-right .input.is-medium~.icon,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-medium~.icon,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-medium~.icon,.control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}.control.has-icons-left .input.is-large~.icon,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input.is-large~.icon,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input.is-large~.icon,.control.has-icons-left .select.is-large~.icon,.control.has-icons-right .input.is-large~.icon,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input.is-large~.icon,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input.is-large~.icon,.control.has-icons-right .select.is-large~.icon{font-size:1.5rem}.control.has-icons-left .icon,.control.has-icons-right .icon{color:#dbdbdb;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}.control.has-icons-left .input,.control.has-icons-left #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .control.has-icons-left form.docs-search>input,.control.has-icons-left .select select{padding-left:2.5em}.control.has-icons-left .icon.is-left{left:0}.control.has-icons-right .input,.control.has-icons-right #documenter .docs-sidebar form.docs-search>input,#documenter .docs-sidebar .control.has-icons-right form.docs-search>input,.control.has-icons-right .select select{padding-right:2.5em}.control.has-icons-right .icon.is-right{right:0}.control.is-loading::after{position:absolute !important;right:.625em;top:0.625em;z-index:4}.control.is-loading.is-small:after,#documenter .docs-sidebar form.docs-search>input.is-loading:after{font-size:.75rem}.control.is-loading.is-medium:after{font-size:1.25rem}.control.is-loading.is-large:after{font-size:1.5rem}.breadcrumb{font-size:1rem;white-space:nowrap}.breadcrumb a{align-items:center;color:#2e63b8;display:flex;justify-content:center;padding:0 .75em}.breadcrumb a:hover{color:#363636}.breadcrumb li{align-items:center;display:flex}.breadcrumb li:first-child a{padding-left:0}.breadcrumb li.is-active a{color:#222;cursor:default;pointer-events:none}.breadcrumb li+li::before{color:#b5b5b5;content:"\0002f"}.breadcrumb ul,.breadcrumb ol{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}.breadcrumb .icon:first-child{margin-right:.5em}.breadcrumb .icon:last-child{margin-left:.5em}.breadcrumb.is-centered ol,.breadcrumb.is-centered ul{justify-content:center}.breadcrumb.is-right ol,.breadcrumb.is-right ul{justify-content:flex-end}.breadcrumb.is-small,#documenter .docs-sidebar form.docs-search>input.breadcrumb{font-size:.75rem}.breadcrumb.is-medium{font-size:1.25rem}.breadcrumb.is-large{font-size:1.5rem}.breadcrumb.has-arrow-separator li+li::before{content:"\02192"}.breadcrumb.has-bullet-separator li+li::before{content:"\02022"}.breadcrumb.has-dot-separator li+li::before{content:"\000b7"}.breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}.card{background-color:#fff;border-radius:.25rem;box-shadow:#bbb;color:#222;max-width:100%;position:relative}.card-footer:first-child,.card-content:first-child,.card-header:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-footer:last-child,.card-content:last-child,.card-header:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-header{background-color:rgba(0,0,0,0);align-items:stretch;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);display:flex}.card-header-title{align-items:center;color:#222;display:flex;flex-grow:1;font-weight:700;padding:0.75rem 1rem}.card-header-title.is-centered{justify-content:center}.card-header-icon{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0;align-items:center;cursor:pointer;display:flex;justify-content:center;padding:0.75rem 1rem}.card-image{display:block;position:relative}.card-image:first-child img{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-image:last-child img{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-content{background-color:rgba(0,0,0,0);padding:1.5rem}.card-footer{background-color:rgba(0,0,0,0);border-top:1px solid #ededed;align-items:stretch;display:flex}.card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}.card-footer-item:not(:last-child){border-right:1px solid #ededed}.card .media:not(:last-child){margin-bottom:1.5rem}.dropdown{display:inline-flex;position:relative;vertical-align:top}.dropdown.is-active .dropdown-menu,.dropdown.is-hoverable:hover .dropdown-menu{display:block}.dropdown.is-right .dropdown-menu{left:auto;right:0}.dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}.dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}.dropdown-content{background-color:#fff;border-radius:4px;box-shadow:#bbb;padding-bottom:.5rem;padding-top:.5rem}.dropdown-item{color:#222;display:block;font-size:0.875rem;line-height:1.5;padding:0.375rem 1rem;position:relative}a.dropdown-item,button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}a.dropdown-item:hover,button.dropdown-item:hover{background-color:#f5f5f5;color:#0a0a0a}a.dropdown-item.is-active,button.dropdown-item.is-active{background-color:#2e63b8;color:#fff}.dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:0.5rem 0}.level{align-items:center;justify-content:space-between}.level code{border-radius:4px}.level img{display:inline-block;vertical-align:top}.level.is-mobile{display:flex}.level.is-mobile .level-left,.level.is-mobile .level-right{display:flex}.level.is-mobile .level-left+.level-right{margin-top:0}.level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}.level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width: 769px),print{.level{display:flex}.level>.level-item:not(.is-narrow){flex-grow:1}}.level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}.level-item .title,.level-item .subtitle{margin-bottom:0}@media screen and (max-width: 768px){.level-item:not(:last-child){margin-bottom:.75rem}}.level-left,.level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.level-left .level-item.is-flexible,.level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width: 769px),print{.level-left .level-item:not(:last-child),.level-right .level-item:not(:last-child){margin-right:.75rem}}.level-left{align-items:center;justify-content:flex-start}@media screen and (max-width: 768px){.level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width: 769px),print{.level-left{display:flex}}.level-right{align-items:center;justify-content:flex-end}@media screen and (min-width: 769px),print{.level-right{display:flex}}.media{align-items:flex-start;display:flex;text-align:inherit}.media .content:not(:last-child){margin-bottom:.75rem}.media .media{border-top:1px solid rgba(219,219,219,0.5);display:flex;padding-top:.75rem}.media .media .content:not(:last-child),.media .media .control:not(:last-child){margin-bottom:.5rem}.media .media .media{padding-top:.5rem}.media .media .media+.media{margin-top:.5rem}.media+.media{border-top:1px solid rgba(219,219,219,0.5);margin-top:1rem;padding-top:1rem}.media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}.media-left,.media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.media-left{margin-right:1rem}.media-right{margin-left:1rem}.media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width: 768px){.media-content{overflow-x:auto}}.menu{font-size:1rem}.menu.is-small,#documenter .docs-sidebar form.docs-search>input.menu{font-size:.75rem}.menu.is-medium{font-size:1.25rem}.menu.is-large{font-size:1.5rem}.menu-list{line-height:1.25}.menu-list a{border-radius:2px;color:#222;display:block;padding:0.5em 0.75em}.menu-list a:hover{background-color:#f5f5f5;color:#222}.menu-list a.is-active{background-color:#2e63b8;color:#fff}.menu-list li ul{border-left:1px solid #dbdbdb;margin:.75em;padding-left:.75em}.menu-label{color:#6b6b6b;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}.menu-label:not(:first-child){margin-top:1em}.menu-label:not(:last-child){margin-bottom:1em}.message{background-color:#f5f5f5;border-radius:4px;font-size:1rem}.message strong{color:currentColor}.message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}.message.is-small,#documenter .docs-sidebar form.docs-search>input.message{font-size:.75rem}.message.is-medium{font-size:1.25rem}.message.is-large{font-size:1.5rem}.message.is-white{background-color:#fff}.message.is-white .message-header{background-color:#fff;color:#0a0a0a}.message.is-white .message-body{border-color:#fff}.message.is-black{background-color:#fafafa}.message.is-black .message-header{background-color:#0a0a0a;color:#fff}.message.is-black .message-body{border-color:#0a0a0a}.message.is-light{background-color:#fafafa}.message.is-light .message-header{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.message.is-light .message-body{border-color:#f5f5f5}.message.is-dark,.content kbd.message{background-color:#fafafa}.message.is-dark .message-header,.content kbd.message .message-header{background-color:#363636;color:#fff}.message.is-dark .message-body,.content kbd.message .message-body{border-color:#363636}.message.is-primary,.docstring>section>a.message.docs-sourcelink{background-color:#eef8fc}.message.is-primary .message-header,.docstring>section>a.message.docs-sourcelink .message-header{background-color:#4eb5de;color:#fff}.message.is-primary .message-body,.docstring>section>a.message.docs-sourcelink .message-body{border-color:#4eb5de;color:#1a6d8e}.message.is-link{background-color:#eff3fb}.message.is-link .message-header{background-color:#2e63b8;color:#fff}.message.is-link .message-body{border-color:#2e63b8;color:#3169c4}.message.is-info{background-color:#ecf7fe}.message.is-info .message-header{background-color:#209cee;color:#fff}.message.is-info .message-body{border-color:#209cee;color:#0e72b4}.message.is-success{background-color:#eefcf3}.message.is-success .message-header{background-color:#22c35b;color:#fff}.message.is-success .message-body{border-color:#22c35b;color:#198f43}.message.is-warning{background-color:#fffbeb}.message.is-warning .message-header{background-color:#ffdd57;color:rgba(0,0,0,0.7)}.message.is-warning .message-body{border-color:#ffdd57;color:#947600}.message.is-danger{background-color:#ffeceb}.message.is-danger .message-header{background-color:#da0b00;color:#fff}.message.is-danger .message-body{border-color:#da0b00;color:#f50c00}.message-header{align-items:center;background-color:#222;border-radius:4px 4px 0 0;color:#fff;display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.75em 1em;position:relative}.message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}.message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}.message-body{border-color:#dbdbdb;border-radius:4px;border-style:solid;border-width:0 0 0 4px;color:#222;padding:1.25em 1.5em}.message-body code,.message-body pre{background-color:#fff}.message-body pre code{background-color:rgba(0,0,0,0)}.modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}.modal.is-active{display:flex}.modal-background{background-color:rgba(10,10,10,0.86)}.modal-content,.modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width: 769px){.modal-content,.modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}.modal-close{background:none;height:40px;position:fixed;right:20px;top:20px;width:40px}.modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}.modal-card-head,.modal-card-foot{align-items:center;background-color:#f5f5f5;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}.modal-card-head{border-bottom:1px solid #dbdbdb;border-top-left-radius:6px;border-top-right-radius:6px}.modal-card-title{color:#222;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}.modal-card-foot{border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:1px solid #dbdbdb}.modal-card-foot .button:not(:last-child){margin-right:.5em}.modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}.navbar{background-color:#fff;min-height:3.25rem;position:relative;z-index:30}.navbar.is-white{background-color:#fff;color:#0a0a0a}.navbar.is-white .navbar-brand>.navbar-item,.navbar.is-white .navbar-brand .navbar-link{color:#0a0a0a}.navbar.is-white .navbar-brand>a.navbar-item:focus,.navbar.is-white .navbar-brand>a.navbar-item:hover,.navbar.is-white .navbar-brand>a.navbar-item.is-active,.navbar.is-white .navbar-brand .navbar-link:focus,.navbar.is-white .navbar-brand .navbar-link:hover,.navbar.is-white .navbar-brand .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width: 1056px){.navbar.is-white .navbar-start>.navbar-item,.navbar.is-white .navbar-start .navbar-link,.navbar.is-white .navbar-end>.navbar-item,.navbar.is-white .navbar-end .navbar-link{color:#0a0a0a}.navbar.is-white .navbar-start>a.navbar-item:focus,.navbar.is-white .navbar-start>a.navbar-item:hover,.navbar.is-white .navbar-start>a.navbar-item.is-active,.navbar.is-white .navbar-start .navbar-link:focus,.navbar.is-white .navbar-start .navbar-link:hover,.navbar.is-white .navbar-start .navbar-link.is-active,.navbar.is-white .navbar-end>a.navbar-item:focus,.navbar.is-white .navbar-end>a.navbar-item:hover,.navbar.is-white .navbar-end>a.navbar-item.is-active,.navbar.is-white .navbar-end .navbar-link:focus,.navbar.is-white .navbar-end .navbar-link:hover,.navbar.is-white .navbar-end .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-start .navbar-link::after,.navbar.is-white .navbar-end .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-white .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}.navbar.is-black{background-color:#0a0a0a;color:#fff}.navbar.is-black .navbar-brand>.navbar-item,.navbar.is-black .navbar-brand .navbar-link{color:#fff}.navbar.is-black .navbar-brand>a.navbar-item:focus,.navbar.is-black .navbar-brand>a.navbar-item:hover,.navbar.is-black .navbar-brand>a.navbar-item.is-active,.navbar.is-black .navbar-brand .navbar-link:focus,.navbar.is-black .navbar-brand .navbar-link:hover,.navbar.is-black .navbar-brand .navbar-link.is-active{background-color:#000;color:#fff}.navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-black .navbar-start>.navbar-item,.navbar.is-black .navbar-start .navbar-link,.navbar.is-black .navbar-end>.navbar-item,.navbar.is-black .navbar-end .navbar-link{color:#fff}.navbar.is-black .navbar-start>a.navbar-item:focus,.navbar.is-black .navbar-start>a.navbar-item:hover,.navbar.is-black .navbar-start>a.navbar-item.is-active,.navbar.is-black .navbar-start .navbar-link:focus,.navbar.is-black .navbar-start .navbar-link:hover,.navbar.is-black .navbar-start .navbar-link.is-active,.navbar.is-black .navbar-end>a.navbar-item:focus,.navbar.is-black .navbar-end>a.navbar-item:hover,.navbar.is-black .navbar-end>a.navbar-item.is-active,.navbar.is-black .navbar-end .navbar-link:focus,.navbar.is-black .navbar-end .navbar-link:hover,.navbar.is-black .navbar-end .navbar-link.is-active{background-color:#000;color:#fff}.navbar.is-black .navbar-start .navbar-link::after,.navbar.is-black .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-black .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link{background-color:#000;color:#fff}.navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}.navbar.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-brand>.navbar-item,.navbar.is-light .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-brand>a.navbar-item:focus,.navbar.is-light .navbar-brand>a.navbar-item:hover,.navbar.is-light .navbar-brand>a.navbar-item.is-active,.navbar.is-light .navbar-brand .navbar-link:focus,.navbar.is-light .navbar-brand .navbar-link:hover,.navbar.is-light .navbar-brand .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){.navbar.is-light .navbar-start>.navbar-item,.navbar.is-light .navbar-start .navbar-link,.navbar.is-light .navbar-end>.navbar-item,.navbar.is-light .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-start>a.navbar-item:focus,.navbar.is-light .navbar-start>a.navbar-item:hover,.navbar.is-light .navbar-start>a.navbar-item.is-active,.navbar.is-light .navbar-start .navbar-link:focus,.navbar.is-light .navbar-start .navbar-link:hover,.navbar.is-light .navbar-start .navbar-link.is-active,.navbar.is-light .navbar-end>a.navbar-item:focus,.navbar.is-light .navbar-end>a.navbar-item:hover,.navbar.is-light .navbar-end>a.navbar-item.is-active,.navbar.is-light .navbar-end .navbar-link:focus,.navbar.is-light .navbar-end .navbar-link:hover,.navbar.is-light .navbar-end .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-start .navbar-link::after,.navbar.is-light .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}.navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}}.navbar.is-dark,.content kbd.navbar{background-color:#363636;color:#fff}.navbar.is-dark .navbar-brand>.navbar-item,.content kbd.navbar .navbar-brand>.navbar-item,.navbar.is-dark .navbar-brand .navbar-link,.content kbd.navbar .navbar-brand .navbar-link{color:#fff}.navbar.is-dark .navbar-brand>a.navbar-item:focus,.content kbd.navbar .navbar-brand>a.navbar-item:focus,.navbar.is-dark .navbar-brand>a.navbar-item:hover,.content kbd.navbar .navbar-brand>a.navbar-item:hover,.navbar.is-dark .navbar-brand>a.navbar-item.is-active,.content kbd.navbar .navbar-brand>a.navbar-item.is-active,.navbar.is-dark .navbar-brand .navbar-link:focus,.content kbd.navbar .navbar-brand .navbar-link:focus,.navbar.is-dark .navbar-brand .navbar-link:hover,.content kbd.navbar .navbar-brand .navbar-link:hover,.navbar.is-dark .navbar-brand .navbar-link.is-active,.content kbd.navbar .navbar-brand .navbar-link.is-active{background-color:#292929;color:#fff}.navbar.is-dark .navbar-brand .navbar-link::after,.content kbd.navbar .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-burger,.content kbd.navbar .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-dark .navbar-start>.navbar-item,.content kbd.navbar .navbar-start>.navbar-item,.navbar.is-dark .navbar-start .navbar-link,.content kbd.navbar .navbar-start .navbar-link,.navbar.is-dark .navbar-end>.navbar-item,.content kbd.navbar .navbar-end>.navbar-item,.navbar.is-dark .navbar-end .navbar-link,.content kbd.navbar .navbar-end .navbar-link{color:#fff}.navbar.is-dark .navbar-start>a.navbar-item:focus,.content kbd.navbar .navbar-start>a.navbar-item:focus,.navbar.is-dark .navbar-start>a.navbar-item:hover,.content kbd.navbar .navbar-start>a.navbar-item:hover,.navbar.is-dark .navbar-start>a.navbar-item.is-active,.content kbd.navbar .navbar-start>a.navbar-item.is-active,.navbar.is-dark .navbar-start .navbar-link:focus,.content kbd.navbar .navbar-start .navbar-link:focus,.navbar.is-dark .navbar-start .navbar-link:hover,.content kbd.navbar .navbar-start .navbar-link:hover,.navbar.is-dark .navbar-start .navbar-link.is-active,.content kbd.navbar .navbar-start .navbar-link.is-active,.navbar.is-dark .navbar-end>a.navbar-item:focus,.content kbd.navbar .navbar-end>a.navbar-item:focus,.navbar.is-dark .navbar-end>a.navbar-item:hover,.content kbd.navbar .navbar-end>a.navbar-item:hover,.navbar.is-dark .navbar-end>a.navbar-item.is-active,.content kbd.navbar .navbar-end>a.navbar-item.is-active,.navbar.is-dark .navbar-end .navbar-link:focus,.content kbd.navbar .navbar-end .navbar-link:focus,.navbar.is-dark .navbar-end .navbar-link:hover,.content kbd.navbar .navbar-end .navbar-link:hover,.navbar.is-dark .navbar-end .navbar-link.is-active,.content kbd.navbar .navbar-end .navbar-link.is-active{background-color:#292929;color:#fff}.navbar.is-dark .navbar-start .navbar-link::after,.content kbd.navbar .navbar-start .navbar-link::after,.navbar.is-dark .navbar-end .navbar-link::after,.content kbd.navbar .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,.content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link,.content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,.content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link{background-color:#292929;color:#fff}.navbar.is-dark .navbar-dropdown a.navbar-item.is-active,.content kbd.navbar .navbar-dropdown a.navbar-item.is-active{background-color:#363636;color:#fff}}.navbar.is-primary,.docstring>section>a.navbar.docs-sourcelink{background-color:#4eb5de;color:#fff}.navbar.is-primary .navbar-brand>.navbar-item,.docstring>section>a.navbar.docs-sourcelink .navbar-brand>.navbar-item,.navbar.is-primary .navbar-brand .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link{color:#fff}.navbar.is-primary .navbar-brand>a.navbar-item:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:focus,.navbar.is-primary .navbar-brand>a.navbar-item:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item:hover,.navbar.is-primary .navbar-brand>a.navbar-item.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-brand>a.navbar-item.is-active,.navbar.is-primary .navbar-brand .navbar-link:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus,.navbar.is-primary .navbar-brand .navbar-link:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover,.navbar.is-primary .navbar-brand .navbar-link.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active{background-color:#39acda;color:#fff}.navbar.is-primary .navbar-brand .navbar-link::after,.docstring>section>a.navbar.docs-sourcelink .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-burger,.docstring>section>a.navbar.docs-sourcelink .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-primary .navbar-start>.navbar-item,.docstring>section>a.navbar.docs-sourcelink .navbar-start>.navbar-item,.navbar.is-primary .navbar-start .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link,.navbar.is-primary .navbar-end>.navbar-item,.docstring>section>a.navbar.docs-sourcelink .navbar-end>.navbar-item,.navbar.is-primary .navbar-end .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link{color:#fff}.navbar.is-primary .navbar-start>a.navbar-item:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:focus,.navbar.is-primary .navbar-start>a.navbar-item:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item:hover,.navbar.is-primary .navbar-start>a.navbar-item.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-start>a.navbar-item.is-active,.navbar.is-primary .navbar-start .navbar-link:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:focus,.navbar.is-primary .navbar-start .navbar-link:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link:hover,.navbar.is-primary .navbar-start .navbar-link.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active,.navbar.is-primary .navbar-end>a.navbar-item:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:focus,.navbar.is-primary .navbar-end>a.navbar-item:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item:hover,.navbar.is-primary .navbar-end>a.navbar-item.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-end>a.navbar-item.is-active,.navbar.is-primary .navbar-end .navbar-link:focus,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:focus,.navbar.is-primary .navbar-end .navbar-link:hover,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link:hover,.navbar.is-primary .navbar-end .navbar-link.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active{background-color:#39acda;color:#fff}.navbar.is-primary .navbar-start .navbar-link::after,.docstring>section>a.navbar.docs-sourcelink .navbar-start .navbar-link::after,.navbar.is-primary .navbar-end .navbar-link::after,.docstring>section>a.navbar.docs-sourcelink .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,.docstring>section>a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link{background-color:#39acda;color:#fff}.navbar.is-primary .navbar-dropdown a.navbar-item.is-active,.docstring>section>a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active{background-color:#4eb5de;color:#fff}}.navbar.is-link{background-color:#2e63b8;color:#fff}.navbar.is-link .navbar-brand>.navbar-item,.navbar.is-link .navbar-brand .navbar-link{color:#fff}.navbar.is-link .navbar-brand>a.navbar-item:focus,.navbar.is-link .navbar-brand>a.navbar-item:hover,.navbar.is-link .navbar-brand>a.navbar-item.is-active,.navbar.is-link .navbar-brand .navbar-link:focus,.navbar.is-link .navbar-brand .navbar-link:hover,.navbar.is-link .navbar-brand .navbar-link.is-active{background-color:#2958a4;color:#fff}.navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-link .navbar-start>.navbar-item,.navbar.is-link .navbar-start .navbar-link,.navbar.is-link .navbar-end>.navbar-item,.navbar.is-link .navbar-end .navbar-link{color:#fff}.navbar.is-link .navbar-start>a.navbar-item:focus,.navbar.is-link .navbar-start>a.navbar-item:hover,.navbar.is-link .navbar-start>a.navbar-item.is-active,.navbar.is-link .navbar-start .navbar-link:focus,.navbar.is-link .navbar-start .navbar-link:hover,.navbar.is-link .navbar-start .navbar-link.is-active,.navbar.is-link .navbar-end>a.navbar-item:focus,.navbar.is-link .navbar-end>a.navbar-item:hover,.navbar.is-link .navbar-end>a.navbar-item.is-active,.navbar.is-link .navbar-end .navbar-link:focus,.navbar.is-link .navbar-end .navbar-link:hover,.navbar.is-link .navbar-end .navbar-link.is-active{background-color:#2958a4;color:#fff}.navbar.is-link .navbar-start .navbar-link::after,.navbar.is-link .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-link .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link{background-color:#2958a4;color:#fff}.navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#2e63b8;color:#fff}}.navbar.is-info{background-color:#209cee;color:#fff}.navbar.is-info .navbar-brand>.navbar-item,.navbar.is-info .navbar-brand .navbar-link{color:#fff}.navbar.is-info .navbar-brand>a.navbar-item:focus,.navbar.is-info .navbar-brand>a.navbar-item:hover,.navbar.is-info .navbar-brand>a.navbar-item.is-active,.navbar.is-info .navbar-brand .navbar-link:focus,.navbar.is-info .navbar-brand .navbar-link:hover,.navbar.is-info .navbar-brand .navbar-link.is-active{background-color:#1190e3;color:#fff}.navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-info .navbar-start>.navbar-item,.navbar.is-info .navbar-start .navbar-link,.navbar.is-info .navbar-end>.navbar-item,.navbar.is-info .navbar-end .navbar-link{color:#fff}.navbar.is-info .navbar-start>a.navbar-item:focus,.navbar.is-info .navbar-start>a.navbar-item:hover,.navbar.is-info .navbar-start>a.navbar-item.is-active,.navbar.is-info .navbar-start .navbar-link:focus,.navbar.is-info .navbar-start .navbar-link:hover,.navbar.is-info .navbar-start .navbar-link.is-active,.navbar.is-info .navbar-end>a.navbar-item:focus,.navbar.is-info .navbar-end>a.navbar-item:hover,.navbar.is-info .navbar-end>a.navbar-item.is-active,.navbar.is-info .navbar-end .navbar-link:focus,.navbar.is-info .navbar-end .navbar-link:hover,.navbar.is-info .navbar-end .navbar-link.is-active{background-color:#1190e3;color:#fff}.navbar.is-info .navbar-start .navbar-link::after,.navbar.is-info .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link{background-color:#1190e3;color:#fff}.navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#209cee;color:#fff}}.navbar.is-success{background-color:#22c35b;color:#fff}.navbar.is-success .navbar-brand>.navbar-item,.navbar.is-success .navbar-brand .navbar-link{color:#fff}.navbar.is-success .navbar-brand>a.navbar-item:focus,.navbar.is-success .navbar-brand>a.navbar-item:hover,.navbar.is-success .navbar-brand>a.navbar-item.is-active,.navbar.is-success .navbar-brand .navbar-link:focus,.navbar.is-success .navbar-brand .navbar-link:hover,.navbar.is-success .navbar-brand .navbar-link.is-active{background-color:#1ead51;color:#fff}.navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-success .navbar-start>.navbar-item,.navbar.is-success .navbar-start .navbar-link,.navbar.is-success .navbar-end>.navbar-item,.navbar.is-success .navbar-end .navbar-link{color:#fff}.navbar.is-success .navbar-start>a.navbar-item:focus,.navbar.is-success .navbar-start>a.navbar-item:hover,.navbar.is-success .navbar-start>a.navbar-item.is-active,.navbar.is-success .navbar-start .navbar-link:focus,.navbar.is-success .navbar-start .navbar-link:hover,.navbar.is-success .navbar-start .navbar-link.is-active,.navbar.is-success .navbar-end>a.navbar-item:focus,.navbar.is-success .navbar-end>a.navbar-item:hover,.navbar.is-success .navbar-end>a.navbar-item.is-active,.navbar.is-success .navbar-end .navbar-link:focus,.navbar.is-success .navbar-end .navbar-link:hover,.navbar.is-success .navbar-end .navbar-link.is-active{background-color:#1ead51;color:#fff}.navbar.is-success .navbar-start .navbar-link::after,.navbar.is-success .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link{background-color:#1ead51;color:#fff}.navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#22c35b;color:#fff}}.navbar.is-warning{background-color:#ffdd57;color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-brand>.navbar-item,.navbar.is-warning .navbar-brand .navbar-link{color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-brand>a.navbar-item:focus,.navbar.is-warning .navbar-brand>a.navbar-item:hover,.navbar.is-warning .navbar-brand>a.navbar-item.is-active,.navbar.is-warning .navbar-brand .navbar-link:focus,.navbar.is-warning .navbar-brand .navbar-link:hover,.navbar.is-warning .navbar-brand .navbar-link.is-active{background-color:#ffd83e;color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-burger{color:rgba(0,0,0,0.7)}@media screen and (min-width: 1056px){.navbar.is-warning .navbar-start>.navbar-item,.navbar.is-warning .navbar-start .navbar-link,.navbar.is-warning .navbar-end>.navbar-item,.navbar.is-warning .navbar-end .navbar-link{color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-start>a.navbar-item:focus,.navbar.is-warning .navbar-start>a.navbar-item:hover,.navbar.is-warning .navbar-start>a.navbar-item.is-active,.navbar.is-warning .navbar-start .navbar-link:focus,.navbar.is-warning .navbar-start .navbar-link:hover,.navbar.is-warning .navbar-start .navbar-link.is-active,.navbar.is-warning .navbar-end>a.navbar-item:focus,.navbar.is-warning .navbar-end>a.navbar-item:hover,.navbar.is-warning .navbar-end>a.navbar-item.is-active,.navbar.is-warning .navbar-end .navbar-link:focus,.navbar.is-warning .navbar-end .navbar-link:hover,.navbar.is-warning .navbar-end .navbar-link.is-active{background-color:#ffd83e;color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-start .navbar-link::after,.navbar.is-warning .navbar-end .navbar-link::after{border-color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link{background-color:#ffd83e;color:rgba(0,0,0,0.7)}.navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#ffdd57;color:rgba(0,0,0,0.7)}}.navbar.is-danger{background-color:#da0b00;color:#fff}.navbar.is-danger .navbar-brand>.navbar-item,.navbar.is-danger .navbar-brand .navbar-link{color:#fff}.navbar.is-danger .navbar-brand>a.navbar-item:focus,.navbar.is-danger .navbar-brand>a.navbar-item:hover,.navbar.is-danger .navbar-brand>a.navbar-item.is-active,.navbar.is-danger .navbar-brand .navbar-link:focus,.navbar.is-danger .navbar-brand .navbar-link:hover,.navbar.is-danger .navbar-brand .navbar-link.is-active{background-color:#c10a00;color:#fff}.navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width: 1056px){.navbar.is-danger .navbar-start>.navbar-item,.navbar.is-danger .navbar-start .navbar-link,.navbar.is-danger .navbar-end>.navbar-item,.navbar.is-danger .navbar-end .navbar-link{color:#fff}.navbar.is-danger .navbar-start>a.navbar-item:focus,.navbar.is-danger .navbar-start>a.navbar-item:hover,.navbar.is-danger .navbar-start>a.navbar-item.is-active,.navbar.is-danger .navbar-start .navbar-link:focus,.navbar.is-danger .navbar-start .navbar-link:hover,.navbar.is-danger .navbar-start .navbar-link.is-active,.navbar.is-danger .navbar-end>a.navbar-item:focus,.navbar.is-danger .navbar-end>a.navbar-item:hover,.navbar.is-danger .navbar-end>a.navbar-item.is-active,.navbar.is-danger .navbar-end .navbar-link:focus,.navbar.is-danger .navbar-end .navbar-link:hover,.navbar.is-danger .navbar-end .navbar-link.is-active{background-color:#c10a00;color:#fff}.navbar.is-danger .navbar-start .navbar-link::after,.navbar.is-danger .navbar-end .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link,.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link{background-color:#c10a00;color:#fff}.navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#da0b00;color:#fff}}.navbar>.container{align-items:stretch;display:flex;min-height:3.25rem;width:100%}.navbar.has-shadow{box-shadow:0 2px 0 0 #f5f5f5}.navbar.is-fixed-bottom,.navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom{bottom:0}.navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #f5f5f5}.navbar.is-fixed-top{top:0}html.has-navbar-fixed-top,body.has-navbar-fixed-top{padding-top:3.25rem}html.has-navbar-fixed-bottom,body.has-navbar-fixed-bottom{padding-bottom:3.25rem}.navbar-brand,.navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:3.25rem}.navbar-brand a.navbar-item:focus,.navbar-brand a.navbar-item:hover{background-color:transparent}.navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}.navbar-burger{color:#222;-moz-appearance:none;-webkit-appearance:none;appearance:none;background:none;border:none;cursor:pointer;display:block;height:3.25rem;position:relative;width:3.25rem;margin-left:auto}.navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color, opacity, transform;transition-timing-function:ease-out;width:16px}.navbar-burger span:nth-child(1){top:calc(50% - 6px)}.navbar-burger span:nth-child(2){top:calc(50% - 1px)}.navbar-burger span:nth-child(3){top:calc(50% + 4px)}.navbar-burger:hover{background-color:rgba(0,0,0,0.05)}.navbar-burger.is-active span:nth-child(1){transform:translateY(5px) rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}.navbar-menu{display:none}.navbar-item,.navbar-link{color:#222;display:block;line-height:1.5;padding:0.5rem 0.75rem;position:relative}.navbar-item .icon:only-child,.navbar-link .icon:only-child{margin-left:-0.25rem;margin-right:-0.25rem}a.navbar-item,.navbar-link{cursor:pointer}a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover,a.navbar-item.is-active,.navbar-link:focus,.navbar-link:focus-within,.navbar-link:hover,.navbar-link.is-active{background-color:#fafafa;color:#2e63b8}.navbar-item{flex-grow:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}.navbar-item.has-dropdown{padding:0}.navbar-item.is-expanded{flex-grow:1;flex-shrink:1}.navbar-item.is-tab{border-bottom:1px solid transparent;min-height:3.25rem;padding-bottom:calc(0.5rem - 1px)}.navbar-item.is-tab:focus,.navbar-item.is-tab:hover{background-color:rgba(0,0,0,0);border-bottom-color:#2e63b8}.navbar-item.is-tab.is-active{background-color:rgba(0,0,0,0);border-bottom-color:#2e63b8;border-bottom-style:solid;border-bottom-width:3px;color:#2e63b8;padding-bottom:calc(0.5rem - 3px)}.navbar-content{flex-grow:1;flex-shrink:1}.navbar-link:not(.is-arrowless){padding-right:2.5em}.navbar-link:not(.is-arrowless)::after{border-color:#2e63b8;margin-top:-0.375em;right:1.125em}.navbar-dropdown{font-size:0.875rem;padding-bottom:0.5rem;padding-top:0.5rem}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-divider{background-color:#f5f5f5;border:none;display:none;height:2px;margin:0.5rem 0}@media screen and (max-width: 1055px){.navbar>.container{display:block}.navbar-brand .navbar-item,.navbar-tabs .navbar-item{align-items:center;display:flex}.navbar-link::after{display:none}.navbar-menu{background-color:#fff;box-shadow:0 8px 16px rgba(10,10,10,0.1);padding:0.5rem 0}.navbar-menu.is-active{display:block}.navbar.is-fixed-bottom-touch,.navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-touch{bottom:0}.navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}.navbar.is-fixed-top-touch{top:0}.navbar.is-fixed-top .navbar-menu,.navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 3.25rem);overflow:auto}html.has-navbar-fixed-top-touch,body.has-navbar-fixed-top-touch{padding-top:3.25rem}html.has-navbar-fixed-bottom-touch,body.has-navbar-fixed-bottom-touch{padding-bottom:3.25rem}}@media screen and (min-width: 1056px){.navbar,.navbar-menu,.navbar-start,.navbar-end{align-items:stretch;display:flex}.navbar{min-height:3.25rem}.navbar.is-spaced{padding:1rem 2rem}.navbar.is-spaced .navbar-start,.navbar.is-spaced .navbar-end{align-items:center}.navbar.is-spaced a.navbar-item,.navbar.is-spaced .navbar-link{border-radius:4px}.navbar.is-transparent a.navbar-item:focus,.navbar.is-transparent a.navbar-item:hover,.navbar.is-transparent a.navbar-item.is-active,.navbar.is-transparent .navbar-link:focus,.navbar.is-transparent .navbar-link:hover,.navbar.is-transparent .navbar-link.is-active{background-color:transparent !important}.navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent !important}.navbar.is-transparent .navbar-dropdown a.navbar-item:focus,.navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#2e63b8}.navbar-burger{display:none}.navbar-item,.navbar-link{align-items:center;display:flex}.navbar-item.has-dropdown{align-items:stretch}.navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(0.25em, -0.25em)}.navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:2px solid #dbdbdb;border-radius:6px 6px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,0.1);top:auto}.navbar-item.is-active .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar.is-spaced .navbar-item.is-active .navbar-dropdown,.navbar-item.is-active .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed{opacity:1;pointer-events:auto;transform:translateY(0)}.navbar-menu{flex-grow:1;flex-shrink:0}.navbar-start{justify-content:flex-start;margin-right:auto}.navbar-end{justify-content:flex-end;margin-left:auto}.navbar-dropdown{background-color:#fff;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:2px solid #dbdbdb;box-shadow:0 8px 8px rgba(10,10,10,0.1);display:none;font-size:0.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}.navbar-dropdown .navbar-item{padding:0.375rem 1rem;white-space:nowrap}.navbar-dropdown a.navbar-item{padding-right:3rem}.navbar-dropdown a.navbar-item:focus,.navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#2e63b8}.navbar.is-spaced .navbar-dropdown,.navbar-dropdown.is-boxed{border-radius:6px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,0.1), 0 0 0 1px rgba(10,10,10,0.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity, transform}.navbar-dropdown.is-right{left:auto;right:0}.navbar-divider{display:block}.navbar>.container .navbar-brand,.container>.navbar .navbar-brand{margin-left:-.75rem}.navbar>.container .navbar-menu,.container>.navbar .navbar-menu{margin-right:-.75rem}.navbar.is-fixed-bottom-desktop,.navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-desktop{bottom:0}.navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,0.1)}.navbar.is-fixed-top-desktop{top:0}html.has-navbar-fixed-top-desktop,body.has-navbar-fixed-top-desktop{padding-top:3.25rem}html.has-navbar-fixed-bottom-desktop,body.has-navbar-fixed-bottom-desktop{padding-bottom:3.25rem}html.has-spaced-navbar-fixed-top,body.has-spaced-navbar-fixed-top{padding-top:5.25rem}html.has-spaced-navbar-fixed-bottom,body.has-spaced-navbar-fixed-bottom{padding-bottom:5.25rem}a.navbar-item.is-active,.navbar-link.is-active{color:#0a0a0a}a.navbar-item.is-active:not(:focus):not(:hover),.navbar-link.is-active:not(:focus):not(:hover){background-color:rgba(0,0,0,0)}.navbar-item.has-dropdown:focus .navbar-link,.navbar-item.has-dropdown:hover .navbar-link,.navbar-item.has-dropdown.is-active .navbar-link{background-color:#fafafa}}.hero.is-fullheight-with-navbar{min-height:calc(100vh - 3.25rem)}.pagination{font-size:1rem;margin:-.25rem}.pagination.is-small,#documenter .docs-sidebar form.docs-search>input.pagination{font-size:.75rem}.pagination.is-medium{font-size:1.25rem}.pagination.is-large{font-size:1.5rem}.pagination.is-rounded .pagination-previous,#documenter .docs-sidebar form.docs-search>input.pagination .pagination-previous,.pagination.is-rounded .pagination-next,#documenter .docs-sidebar form.docs-search>input.pagination .pagination-next{padding-left:1em;padding-right:1em;border-radius:9999px}.pagination.is-rounded .pagination-link,#documenter .docs-sidebar form.docs-search>input.pagination .pagination-link{border-radius:9999px}.pagination,.pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}.pagination-previous,.pagination-next,.pagination-link{border-color:#dbdbdb;color:#222;min-width:2.5em}.pagination-previous:hover,.pagination-next:hover,.pagination-link:hover{border-color:#b5b5b5;color:#363636}.pagination-previous:focus,.pagination-next:focus,.pagination-link:focus{border-color:#3c5dcd}.pagination-previous:active,.pagination-next:active,.pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,0.2)}.pagination-previous[disabled],.pagination-previous.is-disabled,.pagination-next[disabled],.pagination-next.is-disabled,.pagination-link[disabled],.pagination-link.is-disabled{background-color:#dbdbdb;border-color:#dbdbdb;box-shadow:none;color:#6b6b6b;opacity:0.5}.pagination-previous,.pagination-next{padding-left:.75em;padding-right:.75em;white-space:nowrap}.pagination-link.is-current{background-color:#2e63b8;border-color:#2e63b8;color:#fff}.pagination-ellipsis{color:#b5b5b5;pointer-events:none}.pagination-list{flex-wrap:wrap}.pagination-list li{list-style:none}@media screen and (max-width: 768px){.pagination{flex-wrap:wrap}.pagination-previous,.pagination-next{flex-grow:1;flex-shrink:1}.pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width: 769px),print{.pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis{margin-bottom:0;margin-top:0}.pagination-previous{order:2}.pagination-next{order:3}.pagination{justify-content:space-between;margin-bottom:0;margin-top:0}.pagination.is-centered .pagination-previous{order:1}.pagination.is-centered .pagination-list{justify-content:center;order:2}.pagination.is-centered .pagination-next{order:3}.pagination.is-right .pagination-previous{order:1}.pagination.is-right .pagination-next{order:2}.pagination.is-right .pagination-list{justify-content:flex-end;order:3}}.panel{border-radius:6px;box-shadow:#bbb;font-size:1rem}.panel:not(:last-child){margin-bottom:1.5rem}.panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}.panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}.panel.is-white .panel-block.is-active .panel-icon{color:#fff}.panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}.panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}.panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}.panel.is-light .panel-heading{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.panel.is-light .panel-tabs a.is-active{border-bottom-color:#f5f5f5}.panel.is-light .panel-block.is-active .panel-icon{color:#f5f5f5}.panel.is-dark .panel-heading,.content kbd.panel .panel-heading{background-color:#363636;color:#fff}.panel.is-dark .panel-tabs a.is-active,.content kbd.panel .panel-tabs a.is-active{border-bottom-color:#363636}.panel.is-dark .panel-block.is-active .panel-icon,.content kbd.panel .panel-block.is-active .panel-icon{color:#363636}.panel.is-primary .panel-heading,.docstring>section>a.panel.docs-sourcelink .panel-heading{background-color:#4eb5de;color:#fff}.panel.is-primary .panel-tabs a.is-active,.docstring>section>a.panel.docs-sourcelink .panel-tabs a.is-active{border-bottom-color:#4eb5de}.panel.is-primary .panel-block.is-active .panel-icon,.docstring>section>a.panel.docs-sourcelink .panel-block.is-active .panel-icon{color:#4eb5de}.panel.is-link .panel-heading{background-color:#2e63b8;color:#fff}.panel.is-link .panel-tabs a.is-active{border-bottom-color:#2e63b8}.panel.is-link .panel-block.is-active .panel-icon{color:#2e63b8}.panel.is-info .panel-heading{background-color:#209cee;color:#fff}.panel.is-info .panel-tabs a.is-active{border-bottom-color:#209cee}.panel.is-info .panel-block.is-active .panel-icon{color:#209cee}.panel.is-success .panel-heading{background-color:#22c35b;color:#fff}.panel.is-success .panel-tabs a.is-active{border-bottom-color:#22c35b}.panel.is-success .panel-block.is-active .panel-icon{color:#22c35b}.panel.is-warning .panel-heading{background-color:#ffdd57;color:rgba(0,0,0,0.7)}.panel.is-warning .panel-tabs a.is-active{border-bottom-color:#ffdd57}.panel.is-warning .panel-block.is-active .panel-icon{color:#ffdd57}.panel.is-danger .panel-heading{background-color:#da0b00;color:#fff}.panel.is-danger .panel-tabs a.is-active{border-bottom-color:#da0b00}.panel.is-danger .panel-block.is-active .panel-icon{color:#da0b00}.panel-tabs:not(:last-child),.panel-block:not(:last-child){border-bottom:1px solid #ededed}.panel-heading{background-color:#ededed;border-radius:6px 6px 0 0;color:#222;font-size:1.25em;font-weight:700;line-height:1.25;padding:0.75em 1em}.panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}.panel-tabs a{border-bottom:1px solid #dbdbdb;margin-bottom:-1px;padding:0.5em}.panel-tabs a.is-active{border-bottom-color:#4a4a4a;color:#363636}.panel-list a{color:#222}.panel-list a:hover{color:#2e63b8}.panel-block{align-items:center;color:#222;display:flex;justify-content:flex-start;padding:0.5em 0.75em}.panel-block input[type="checkbox"]{margin-right:.75em}.panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}.panel-block.is-wrapped{flex-wrap:wrap}.panel-block.is-active{border-left-color:#2e63b8;color:#363636}.panel-block.is-active .panel-icon{color:#2e63b8}.panel-block:last-child{border-bottom-left-radius:6px;border-bottom-right-radius:6px}a.panel-block,label.panel-block{cursor:pointer}a.panel-block:hover,label.panel-block:hover{background-color:#f5f5f5}.panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#6b6b6b;margin-right:.75em}.panel-icon .fa{font-size:inherit;line-height:inherit}.tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs a{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;color:#222;display:flex;justify-content:center;margin-bottom:-1px;padding:0.5em 1em;vertical-align:top}.tabs a:hover{border-bottom-color:#222;color:#222}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:#2e63b8;color:#2e63b8}.tabs ul{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}.tabs ul.is-left{padding-right:0.75em}.tabs ul.is-center{flex:none;justify-content:center;padding-left:0.75em;padding-right:0.75em}.tabs ul.is-right{justify-content:flex-end;padding-left:0.75em}.tabs .icon:first-child{margin-right:.5em}.tabs .icon:last-child{margin-left:.5em}.tabs.is-centered ul{justify-content:center}.tabs.is-right ul{justify-content:flex-end}.tabs.is-boxed a{border:1px solid transparent;border-radius:4px 4px 0 0}.tabs.is-boxed a:hover{background-color:#f5f5f5;border-bottom-color:#dbdbdb}.tabs.is-boxed li.is-active a{background-color:#fff;border-color:#dbdbdb;border-bottom-color:rgba(0,0,0,0) !important}.tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}.tabs.is-toggle a{border-color:#dbdbdb;border-style:solid;border-width:1px;margin-bottom:0;position:relative}.tabs.is-toggle a:hover{background-color:#f5f5f5;border-color:#b5b5b5;z-index:2}.tabs.is-toggle li+li{margin-left:-1px}.tabs.is-toggle li:first-child a{border-top-left-radius:4px;border-bottom-left-radius:4px}.tabs.is-toggle li:last-child a{border-top-right-radius:4px;border-bottom-right-radius:4px}.tabs.is-toggle li.is-active a{background-color:#2e63b8;border-color:#2e63b8;color:#fff;z-index:1}.tabs.is-toggle ul{border-bottom:none}.tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:9999px;border-top-left-radius:9999px;padding-left:1.25em}.tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:9999px;border-top-right-radius:9999px;padding-right:1.25em}.tabs.is-small,#documenter .docs-sidebar form.docs-search>input.tabs{font-size:.75rem}.tabs.is-medium{font-size:1.25rem}.tabs.is-large{font-size:1.5rem}.column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>.column.is-narrow{flex:none;width:unset}.columns.is-mobile>.column.is-full{flex:none;width:100%}.columns.is-mobile>.column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>.column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>.column.is-half{flex:none;width:50%}.columns.is-mobile>.column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>.column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>.column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>.column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>.column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>.column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>.column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>.column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>.column.is-offset-half{margin-left:50%}.columns.is-mobile>.column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>.column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>.column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>.column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>.column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>.column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>.column.is-0{flex:none;width:0%}.columns.is-mobile>.column.is-offset-0{margin-left:0%}.columns.is-mobile>.column.is-1{flex:none;width:8.33333337%}.columns.is-mobile>.column.is-offset-1{margin-left:8.33333337%}.columns.is-mobile>.column.is-2{flex:none;width:16.66666674%}.columns.is-mobile>.column.is-offset-2{margin-left:16.66666674%}.columns.is-mobile>.column.is-3{flex:none;width:25%}.columns.is-mobile>.column.is-offset-3{margin-left:25%}.columns.is-mobile>.column.is-4{flex:none;width:33.33333337%}.columns.is-mobile>.column.is-offset-4{margin-left:33.33333337%}.columns.is-mobile>.column.is-5{flex:none;width:41.66666674%}.columns.is-mobile>.column.is-offset-5{margin-left:41.66666674%}.columns.is-mobile>.column.is-6{flex:none;width:50%}.columns.is-mobile>.column.is-offset-6{margin-left:50%}.columns.is-mobile>.column.is-7{flex:none;width:58.33333337%}.columns.is-mobile>.column.is-offset-7{margin-left:58.33333337%}.columns.is-mobile>.column.is-8{flex:none;width:66.66666674%}.columns.is-mobile>.column.is-offset-8{margin-left:66.66666674%}.columns.is-mobile>.column.is-9{flex:none;width:75%}.columns.is-mobile>.column.is-offset-9{margin-left:75%}.columns.is-mobile>.column.is-10{flex:none;width:83.33333337%}.columns.is-mobile>.column.is-offset-10{margin-left:83.33333337%}.columns.is-mobile>.column.is-11{flex:none;width:91.66666674%}.columns.is-mobile>.column.is-offset-11{margin-left:91.66666674%}.columns.is-mobile>.column.is-12{flex:none;width:100%}.columns.is-mobile>.column.is-offset-12{margin-left:100%}@media screen and (max-width: 768px){.column.is-narrow-mobile{flex:none;width:unset}.column.is-full-mobile{flex:none;width:100%}.column.is-three-quarters-mobile{flex:none;width:75%}.column.is-two-thirds-mobile{flex:none;width:66.6666%}.column.is-half-mobile{flex:none;width:50%}.column.is-one-third-mobile{flex:none;width:33.3333%}.column.is-one-quarter-mobile{flex:none;width:25%}.column.is-one-fifth-mobile{flex:none;width:20%}.column.is-two-fifths-mobile{flex:none;width:40%}.column.is-three-fifths-mobile{flex:none;width:60%}.column.is-four-fifths-mobile{flex:none;width:80%}.column.is-offset-three-quarters-mobile{margin-left:75%}.column.is-offset-two-thirds-mobile{margin-left:66.6666%}.column.is-offset-half-mobile{margin-left:50%}.column.is-offset-one-third-mobile{margin-left:33.3333%}.column.is-offset-one-quarter-mobile{margin-left:25%}.column.is-offset-one-fifth-mobile{margin-left:20%}.column.is-offset-two-fifths-mobile{margin-left:40%}.column.is-offset-three-fifths-mobile{margin-left:60%}.column.is-offset-four-fifths-mobile{margin-left:80%}.column.is-0-mobile{flex:none;width:0%}.column.is-offset-0-mobile{margin-left:0%}.column.is-1-mobile{flex:none;width:8.33333337%}.column.is-offset-1-mobile{margin-left:8.33333337%}.column.is-2-mobile{flex:none;width:16.66666674%}.column.is-offset-2-mobile{margin-left:16.66666674%}.column.is-3-mobile{flex:none;width:25%}.column.is-offset-3-mobile{margin-left:25%}.column.is-4-mobile{flex:none;width:33.33333337%}.column.is-offset-4-mobile{margin-left:33.33333337%}.column.is-5-mobile{flex:none;width:41.66666674%}.column.is-offset-5-mobile{margin-left:41.66666674%}.column.is-6-mobile{flex:none;width:50%}.column.is-offset-6-mobile{margin-left:50%}.column.is-7-mobile{flex:none;width:58.33333337%}.column.is-offset-7-mobile{margin-left:58.33333337%}.column.is-8-mobile{flex:none;width:66.66666674%}.column.is-offset-8-mobile{margin-left:66.66666674%}.column.is-9-mobile{flex:none;width:75%}.column.is-offset-9-mobile{margin-left:75%}.column.is-10-mobile{flex:none;width:83.33333337%}.column.is-offset-10-mobile{margin-left:83.33333337%}.column.is-11-mobile{flex:none;width:91.66666674%}.column.is-offset-11-mobile{margin-left:91.66666674%}.column.is-12-mobile{flex:none;width:100%}.column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width: 769px),print{.column.is-narrow,.column.is-narrow-tablet{flex:none;width:unset}.column.is-full,.column.is-full-tablet{flex:none;width:100%}.column.is-three-quarters,.column.is-three-quarters-tablet{flex:none;width:75%}.column.is-two-thirds,.column.is-two-thirds-tablet{flex:none;width:66.6666%}.column.is-half,.column.is-half-tablet{flex:none;width:50%}.column.is-one-third,.column.is-one-third-tablet{flex:none;width:33.3333%}.column.is-one-quarter,.column.is-one-quarter-tablet{flex:none;width:25%}.column.is-one-fifth,.column.is-one-fifth-tablet{flex:none;width:20%}.column.is-two-fifths,.column.is-two-fifths-tablet{flex:none;width:40%}.column.is-three-fifths,.column.is-three-fifths-tablet{flex:none;width:60%}.column.is-four-fifths,.column.is-four-fifths-tablet{flex:none;width:80%}.column.is-offset-three-quarters,.column.is-offset-three-quarters-tablet{margin-left:75%}.column.is-offset-two-thirds,.column.is-offset-two-thirds-tablet{margin-left:66.6666%}.column.is-offset-half,.column.is-offset-half-tablet{margin-left:50%}.column.is-offset-one-third,.column.is-offset-one-third-tablet{margin-left:33.3333%}.column.is-offset-one-quarter,.column.is-offset-one-quarter-tablet{margin-left:25%}.column.is-offset-one-fifth,.column.is-offset-one-fifth-tablet{margin-left:20%}.column.is-offset-two-fifths,.column.is-offset-two-fifths-tablet{margin-left:40%}.column.is-offset-three-fifths,.column.is-offset-three-fifths-tablet{margin-left:60%}.column.is-offset-four-fifths,.column.is-offset-four-fifths-tablet{margin-left:80%}.column.is-0,.column.is-0-tablet{flex:none;width:0%}.column.is-offset-0,.column.is-offset-0-tablet{margin-left:0%}.column.is-1,.column.is-1-tablet{flex:none;width:8.33333337%}.column.is-offset-1,.column.is-offset-1-tablet{margin-left:8.33333337%}.column.is-2,.column.is-2-tablet{flex:none;width:16.66666674%}.column.is-offset-2,.column.is-offset-2-tablet{margin-left:16.66666674%}.column.is-3,.column.is-3-tablet{flex:none;width:25%}.column.is-offset-3,.column.is-offset-3-tablet{margin-left:25%}.column.is-4,.column.is-4-tablet{flex:none;width:33.33333337%}.column.is-offset-4,.column.is-offset-4-tablet{margin-left:33.33333337%}.column.is-5,.column.is-5-tablet{flex:none;width:41.66666674%}.column.is-offset-5,.column.is-offset-5-tablet{margin-left:41.66666674%}.column.is-6,.column.is-6-tablet{flex:none;width:50%}.column.is-offset-6,.column.is-offset-6-tablet{margin-left:50%}.column.is-7,.column.is-7-tablet{flex:none;width:58.33333337%}.column.is-offset-7,.column.is-offset-7-tablet{margin-left:58.33333337%}.column.is-8,.column.is-8-tablet{flex:none;width:66.66666674%}.column.is-offset-8,.column.is-offset-8-tablet{margin-left:66.66666674%}.column.is-9,.column.is-9-tablet{flex:none;width:75%}.column.is-offset-9,.column.is-offset-9-tablet{margin-left:75%}.column.is-10,.column.is-10-tablet{flex:none;width:83.33333337%}.column.is-offset-10,.column.is-offset-10-tablet{margin-left:83.33333337%}.column.is-11,.column.is-11-tablet{flex:none;width:91.66666674%}.column.is-offset-11,.column.is-offset-11-tablet{margin-left:91.66666674%}.column.is-12,.column.is-12-tablet{flex:none;width:100%}.column.is-offset-12,.column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width: 1055px){.column.is-narrow-touch{flex:none;width:unset}.column.is-full-touch{flex:none;width:100%}.column.is-three-quarters-touch{flex:none;width:75%}.column.is-two-thirds-touch{flex:none;width:66.6666%}.column.is-half-touch{flex:none;width:50%}.column.is-one-third-touch{flex:none;width:33.3333%}.column.is-one-quarter-touch{flex:none;width:25%}.column.is-one-fifth-touch{flex:none;width:20%}.column.is-two-fifths-touch{flex:none;width:40%}.column.is-three-fifths-touch{flex:none;width:60%}.column.is-four-fifths-touch{flex:none;width:80%}.column.is-offset-three-quarters-touch{margin-left:75%}.column.is-offset-two-thirds-touch{margin-left:66.6666%}.column.is-offset-half-touch{margin-left:50%}.column.is-offset-one-third-touch{margin-left:33.3333%}.column.is-offset-one-quarter-touch{margin-left:25%}.column.is-offset-one-fifth-touch{margin-left:20%}.column.is-offset-two-fifths-touch{margin-left:40%}.column.is-offset-three-fifths-touch{margin-left:60%}.column.is-offset-four-fifths-touch{margin-left:80%}.column.is-0-touch{flex:none;width:0%}.column.is-offset-0-touch{margin-left:0%}.column.is-1-touch{flex:none;width:8.33333337%}.column.is-offset-1-touch{margin-left:8.33333337%}.column.is-2-touch{flex:none;width:16.66666674%}.column.is-offset-2-touch{margin-left:16.66666674%}.column.is-3-touch{flex:none;width:25%}.column.is-offset-3-touch{margin-left:25%}.column.is-4-touch{flex:none;width:33.33333337%}.column.is-offset-4-touch{margin-left:33.33333337%}.column.is-5-touch{flex:none;width:41.66666674%}.column.is-offset-5-touch{margin-left:41.66666674%}.column.is-6-touch{flex:none;width:50%}.column.is-offset-6-touch{margin-left:50%}.column.is-7-touch{flex:none;width:58.33333337%}.column.is-offset-7-touch{margin-left:58.33333337%}.column.is-8-touch{flex:none;width:66.66666674%}.column.is-offset-8-touch{margin-left:66.66666674%}.column.is-9-touch{flex:none;width:75%}.column.is-offset-9-touch{margin-left:75%}.column.is-10-touch{flex:none;width:83.33333337%}.column.is-offset-10-touch{margin-left:83.33333337%}.column.is-11-touch{flex:none;width:91.66666674%}.column.is-offset-11-touch{margin-left:91.66666674%}.column.is-12-touch{flex:none;width:100%}.column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width: 1056px){.column.is-narrow-desktop{flex:none;width:unset}.column.is-full-desktop{flex:none;width:100%}.column.is-three-quarters-desktop{flex:none;width:75%}.column.is-two-thirds-desktop{flex:none;width:66.6666%}.column.is-half-desktop{flex:none;width:50%}.column.is-one-third-desktop{flex:none;width:33.3333%}.column.is-one-quarter-desktop{flex:none;width:25%}.column.is-one-fifth-desktop{flex:none;width:20%}.column.is-two-fifths-desktop{flex:none;width:40%}.column.is-three-fifths-desktop{flex:none;width:60%}.column.is-four-fifths-desktop{flex:none;width:80%}.column.is-offset-three-quarters-desktop{margin-left:75%}.column.is-offset-two-thirds-desktop{margin-left:66.6666%}.column.is-offset-half-desktop{margin-left:50%}.column.is-offset-one-third-desktop{margin-left:33.3333%}.column.is-offset-one-quarter-desktop{margin-left:25%}.column.is-offset-one-fifth-desktop{margin-left:20%}.column.is-offset-two-fifths-desktop{margin-left:40%}.column.is-offset-three-fifths-desktop{margin-left:60%}.column.is-offset-four-fifths-desktop{margin-left:80%}.column.is-0-desktop{flex:none;width:0%}.column.is-offset-0-desktop{margin-left:0%}.column.is-1-desktop{flex:none;width:8.33333337%}.column.is-offset-1-desktop{margin-left:8.33333337%}.column.is-2-desktop{flex:none;width:16.66666674%}.column.is-offset-2-desktop{margin-left:16.66666674%}.column.is-3-desktop{flex:none;width:25%}.column.is-offset-3-desktop{margin-left:25%}.column.is-4-desktop{flex:none;width:33.33333337%}.column.is-offset-4-desktop{margin-left:33.33333337%}.column.is-5-desktop{flex:none;width:41.66666674%}.column.is-offset-5-desktop{margin-left:41.66666674%}.column.is-6-desktop{flex:none;width:50%}.column.is-offset-6-desktop{margin-left:50%}.column.is-7-desktop{flex:none;width:58.33333337%}.column.is-offset-7-desktop{margin-left:58.33333337%}.column.is-8-desktop{flex:none;width:66.66666674%}.column.is-offset-8-desktop{margin-left:66.66666674%}.column.is-9-desktop{flex:none;width:75%}.column.is-offset-9-desktop{margin-left:75%}.column.is-10-desktop{flex:none;width:83.33333337%}.column.is-offset-10-desktop{margin-left:83.33333337%}.column.is-11-desktop{flex:none;width:91.66666674%}.column.is-offset-11-desktop{margin-left:91.66666674%}.column.is-12-desktop{flex:none;width:100%}.column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width: 1216px){.column.is-narrow-widescreen{flex:none;width:unset}.column.is-full-widescreen{flex:none;width:100%}.column.is-three-quarters-widescreen{flex:none;width:75%}.column.is-two-thirds-widescreen{flex:none;width:66.6666%}.column.is-half-widescreen{flex:none;width:50%}.column.is-one-third-widescreen{flex:none;width:33.3333%}.column.is-one-quarter-widescreen{flex:none;width:25%}.column.is-one-fifth-widescreen{flex:none;width:20%}.column.is-two-fifths-widescreen{flex:none;width:40%}.column.is-three-fifths-widescreen{flex:none;width:60%}.column.is-four-fifths-widescreen{flex:none;width:80%}.column.is-offset-three-quarters-widescreen{margin-left:75%}.column.is-offset-two-thirds-widescreen{margin-left:66.6666%}.column.is-offset-half-widescreen{margin-left:50%}.column.is-offset-one-third-widescreen{margin-left:33.3333%}.column.is-offset-one-quarter-widescreen{margin-left:25%}.column.is-offset-one-fifth-widescreen{margin-left:20%}.column.is-offset-two-fifths-widescreen{margin-left:40%}.column.is-offset-three-fifths-widescreen{margin-left:60%}.column.is-offset-four-fifths-widescreen{margin-left:80%}.column.is-0-widescreen{flex:none;width:0%}.column.is-offset-0-widescreen{margin-left:0%}.column.is-1-widescreen{flex:none;width:8.33333337%}.column.is-offset-1-widescreen{margin-left:8.33333337%}.column.is-2-widescreen{flex:none;width:16.66666674%}.column.is-offset-2-widescreen{margin-left:16.66666674%}.column.is-3-widescreen{flex:none;width:25%}.column.is-offset-3-widescreen{margin-left:25%}.column.is-4-widescreen{flex:none;width:33.33333337%}.column.is-offset-4-widescreen{margin-left:33.33333337%}.column.is-5-widescreen{flex:none;width:41.66666674%}.column.is-offset-5-widescreen{margin-left:41.66666674%}.column.is-6-widescreen{flex:none;width:50%}.column.is-offset-6-widescreen{margin-left:50%}.column.is-7-widescreen{flex:none;width:58.33333337%}.column.is-offset-7-widescreen{margin-left:58.33333337%}.column.is-8-widescreen{flex:none;width:66.66666674%}.column.is-offset-8-widescreen{margin-left:66.66666674%}.column.is-9-widescreen{flex:none;width:75%}.column.is-offset-9-widescreen{margin-left:75%}.column.is-10-widescreen{flex:none;width:83.33333337%}.column.is-offset-10-widescreen{margin-left:83.33333337%}.column.is-11-widescreen{flex:none;width:91.66666674%}.column.is-offset-11-widescreen{margin-left:91.66666674%}.column.is-12-widescreen{flex:none;width:100%}.column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width: 1408px){.column.is-narrow-fullhd{flex:none;width:unset}.column.is-full-fullhd{flex:none;width:100%}.column.is-three-quarters-fullhd{flex:none;width:75%}.column.is-two-thirds-fullhd{flex:none;width:66.6666%}.column.is-half-fullhd{flex:none;width:50%}.column.is-one-third-fullhd{flex:none;width:33.3333%}.column.is-one-quarter-fullhd{flex:none;width:25%}.column.is-one-fifth-fullhd{flex:none;width:20%}.column.is-two-fifths-fullhd{flex:none;width:40%}.column.is-three-fifths-fullhd{flex:none;width:60%}.column.is-four-fifths-fullhd{flex:none;width:80%}.column.is-offset-three-quarters-fullhd{margin-left:75%}.column.is-offset-two-thirds-fullhd{margin-left:66.6666%}.column.is-offset-half-fullhd{margin-left:50%}.column.is-offset-one-third-fullhd{margin-left:33.3333%}.column.is-offset-one-quarter-fullhd{margin-left:25%}.column.is-offset-one-fifth-fullhd{margin-left:20%}.column.is-offset-two-fifths-fullhd{margin-left:40%}.column.is-offset-three-fifths-fullhd{margin-left:60%}.column.is-offset-four-fifths-fullhd{margin-left:80%}.column.is-0-fullhd{flex:none;width:0%}.column.is-offset-0-fullhd{margin-left:0%}.column.is-1-fullhd{flex:none;width:8.33333337%}.column.is-offset-1-fullhd{margin-left:8.33333337%}.column.is-2-fullhd{flex:none;width:16.66666674%}.column.is-offset-2-fullhd{margin-left:16.66666674%}.column.is-3-fullhd{flex:none;width:25%}.column.is-offset-3-fullhd{margin-left:25%}.column.is-4-fullhd{flex:none;width:33.33333337%}.column.is-offset-4-fullhd{margin-left:33.33333337%}.column.is-5-fullhd{flex:none;width:41.66666674%}.column.is-offset-5-fullhd{margin-left:41.66666674%}.column.is-6-fullhd{flex:none;width:50%}.column.is-offset-6-fullhd{margin-left:50%}.column.is-7-fullhd{flex:none;width:58.33333337%}.column.is-offset-7-fullhd{margin-left:58.33333337%}.column.is-8-fullhd{flex:none;width:66.66666674%}.column.is-offset-8-fullhd{margin-left:66.66666674%}.column.is-9-fullhd{flex:none;width:75%}.column.is-offset-9-fullhd{margin-left:75%}.column.is-10-fullhd{flex:none;width:83.33333337%}.column.is-offset-10-fullhd{margin-left:83.33333337%}.column.is-11-fullhd{flex:none;width:91.66666674%}.column.is-offset-11-fullhd{margin-left:91.66666674%}.column.is-12-fullhd{flex:none;width:100%}.column.is-offset-12-fullhd{margin-left:100%}}.columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.columns:last-child{margin-bottom:-.75rem}.columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}.columns.is-centered{justify-content:center}.columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}.columns.is-gapless>.column{margin:0;padding:0 !important}.columns.is-gapless:not(:last-child){margin-bottom:1.5rem}.columns.is-gapless:last-child{margin-bottom:0}.columns.is-mobile{display:flex}.columns.is-multiline{flex-wrap:wrap}.columns.is-vcentered{align-items:center}@media screen and (min-width: 769px),print{.columns:not(.is-desktop){display:flex}}@media screen and (min-width: 1056px){.columns.is-desktop{display:flex}}.columns.is-variable{--columnGap: 0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}.columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}.columns.is-variable.is-0{--columnGap: 0rem}@media screen and (max-width: 768px){.columns.is-variable.is-0-mobile{--columnGap: 0rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-0-tablet{--columnGap: 0rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-0-tablet-only{--columnGap: 0rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-0-touch{--columnGap: 0rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-0-desktop{--columnGap: 0rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-0-desktop-only{--columnGap: 0rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-0-widescreen{--columnGap: 0rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-0-widescreen-only{--columnGap: 0rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-0-fullhd{--columnGap: 0rem}}.columns.is-variable.is-1{--columnGap: .25rem}@media screen and (max-width: 768px){.columns.is-variable.is-1-mobile{--columnGap: .25rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-1-tablet{--columnGap: .25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-1-tablet-only{--columnGap: .25rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-1-touch{--columnGap: .25rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-1-desktop{--columnGap: .25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-1-desktop-only{--columnGap: .25rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-1-widescreen{--columnGap: .25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-1-widescreen-only{--columnGap: .25rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-1-fullhd{--columnGap: .25rem}}.columns.is-variable.is-2{--columnGap: .5rem}@media screen and (max-width: 768px){.columns.is-variable.is-2-mobile{--columnGap: .5rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-2-tablet{--columnGap: .5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-2-tablet-only{--columnGap: .5rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-2-touch{--columnGap: .5rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-2-desktop{--columnGap: .5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-2-desktop-only{--columnGap: .5rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-2-widescreen{--columnGap: .5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-2-widescreen-only{--columnGap: .5rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-2-fullhd{--columnGap: .5rem}}.columns.is-variable.is-3{--columnGap: .75rem}@media screen and (max-width: 768px){.columns.is-variable.is-3-mobile{--columnGap: .75rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-3-tablet{--columnGap: .75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-3-tablet-only{--columnGap: .75rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-3-touch{--columnGap: .75rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-3-desktop{--columnGap: .75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-3-desktop-only{--columnGap: .75rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-3-widescreen{--columnGap: .75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-3-widescreen-only{--columnGap: .75rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-3-fullhd{--columnGap: .75rem}}.columns.is-variable.is-4{--columnGap: 1rem}@media screen and (max-width: 768px){.columns.is-variable.is-4-mobile{--columnGap: 1rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-4-tablet{--columnGap: 1rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-4-tablet-only{--columnGap: 1rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-4-touch{--columnGap: 1rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-4-desktop{--columnGap: 1rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-4-desktop-only{--columnGap: 1rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-4-widescreen{--columnGap: 1rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-4-widescreen-only{--columnGap: 1rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-4-fullhd{--columnGap: 1rem}}.columns.is-variable.is-5{--columnGap: 1.25rem}@media screen and (max-width: 768px){.columns.is-variable.is-5-mobile{--columnGap: 1.25rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-5-tablet{--columnGap: 1.25rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-5-tablet-only{--columnGap: 1.25rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-5-touch{--columnGap: 1.25rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-5-desktop{--columnGap: 1.25rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-5-desktop-only{--columnGap: 1.25rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-5-widescreen{--columnGap: 1.25rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-5-widescreen-only{--columnGap: 1.25rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-5-fullhd{--columnGap: 1.25rem}}.columns.is-variable.is-6{--columnGap: 1.5rem}@media screen and (max-width: 768px){.columns.is-variable.is-6-mobile{--columnGap: 1.5rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-6-tablet{--columnGap: 1.5rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-6-tablet-only{--columnGap: 1.5rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-6-touch{--columnGap: 1.5rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-6-desktop{--columnGap: 1.5rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-6-desktop-only{--columnGap: 1.5rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-6-widescreen{--columnGap: 1.5rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-6-widescreen-only{--columnGap: 1.5rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-6-fullhd{--columnGap: 1.5rem}}.columns.is-variable.is-7{--columnGap: 1.75rem}@media screen and (max-width: 768px){.columns.is-variable.is-7-mobile{--columnGap: 1.75rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-7-tablet{--columnGap: 1.75rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-7-tablet-only{--columnGap: 1.75rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-7-touch{--columnGap: 1.75rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-7-desktop{--columnGap: 1.75rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-7-desktop-only{--columnGap: 1.75rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-7-widescreen{--columnGap: 1.75rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-7-widescreen-only{--columnGap: 1.75rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-7-fullhd{--columnGap: 1.75rem}}.columns.is-variable.is-8{--columnGap: 2rem}@media screen and (max-width: 768px){.columns.is-variable.is-8-mobile{--columnGap: 2rem}}@media screen and (min-width: 769px),print{.columns.is-variable.is-8-tablet{--columnGap: 2rem}}@media screen and (min-width: 769px) and (max-width: 1055px){.columns.is-variable.is-8-tablet-only{--columnGap: 2rem}}@media screen and (max-width: 1055px){.columns.is-variable.is-8-touch{--columnGap: 2rem}}@media screen and (min-width: 1056px){.columns.is-variable.is-8-desktop{--columnGap: 2rem}}@media screen and (min-width: 1056px) and (max-width: 1215px){.columns.is-variable.is-8-desktop-only{--columnGap: 2rem}}@media screen and (min-width: 1216px){.columns.is-variable.is-8-widescreen{--columnGap: 2rem}}@media screen and (min-width: 1216px) and (max-width: 1407px){.columns.is-variable.is-8-widescreen-only{--columnGap: 2rem}}@media screen and (min-width: 1408px){.columns.is-variable.is-8-fullhd{--columnGap: 2rem}}.tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:min-content}.tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.tile.is-ancestor:last-child{margin-bottom:-.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:.75rem}.tile.is-child{margin:0 !important}.tile.is-parent{padding:.75rem}.tile.is-vertical{flex-direction:column}.tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width: 769px),print{.tile:not(.is-child){display:flex}.tile.is-1{flex:none;width:8.33333337%}.tile.is-2{flex:none;width:16.66666674%}.tile.is-3{flex:none;width:25%}.tile.is-4{flex:none;width:33.33333337%}.tile.is-5{flex:none;width:41.66666674%}.tile.is-6{flex:none;width:50%}.tile.is-7{flex:none;width:58.33333337%}.tile.is-8{flex:none;width:66.66666674%}.tile.is-9{flex:none;width:75%}.tile.is-10{flex:none;width:83.33333337%}.tile.is-11{flex:none;width:91.66666674%}.tile.is-12{flex:none;width:100%}}.hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}.hero .navbar{background:none}.hero .tabs ul{border-bottom:none}.hero.is-white{background-color:#fff;color:#0a0a0a}.hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-white strong{color:inherit}.hero.is-white .title{color:#0a0a0a}.hero.is-white .subtitle{color:rgba(10,10,10,0.9)}.hero.is-white .subtitle a:not(.button),.hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width: 1055px){.hero.is-white .navbar-menu{background-color:#fff}}.hero.is-white .navbar-item,.hero.is-white .navbar-link{color:rgba(10,10,10,0.7)}.hero.is-white a.navbar-item:hover,.hero.is-white a.navbar-item.is-active,.hero.is-white .navbar-link:hover,.hero.is-white .navbar-link.is-active{background-color:#f2f2f2;color:#0a0a0a}.hero.is-white .tabs a{color:#0a0a0a;opacity:0.9}.hero.is-white .tabs a:hover{opacity:1}.hero.is-white .tabs li.is-active a{color:#fff !important;opacity:1}.hero.is-white .tabs.is-boxed a,.hero.is-white .tabs.is-toggle a{color:#0a0a0a}.hero.is-white .tabs.is-boxed a:hover,.hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-white .tabs.is-boxed li.is-active a,.hero.is-white .tabs.is-boxed li.is-active a:hover,.hero.is-white .tabs.is-toggle li.is-active a,.hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.hero.is-white.is-bold{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}@media screen and (max-width: 768px){.hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg, #e8e3e4 0%, #fff 71%, #fff 100%)}}.hero.is-black{background-color:#0a0a0a;color:#fff}.hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-black strong{color:inherit}.hero.is-black .title{color:#fff}.hero.is-black .subtitle{color:rgba(255,255,255,0.9)}.hero.is-black .subtitle a:not(.button),.hero.is-black .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-black .navbar-menu{background-color:#0a0a0a}}.hero.is-black .navbar-item,.hero.is-black .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-black a.navbar-item:hover,.hero.is-black a.navbar-item.is-active,.hero.is-black .navbar-link:hover,.hero.is-black .navbar-link.is-active{background-color:#000;color:#fff}.hero.is-black .tabs a{color:#fff;opacity:0.9}.hero.is-black .tabs a:hover{opacity:1}.hero.is-black .tabs li.is-active a{color:#0a0a0a !important;opacity:1}.hero.is-black .tabs.is-boxed a,.hero.is-black .tabs.is-toggle a{color:#fff}.hero.is-black .tabs.is-boxed a:hover,.hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-black .tabs.is-boxed li.is-active a,.hero.is-black .tabs.is-boxed li.is-active a:hover,.hero.is-black .tabs.is-toggle li.is-active a,.hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}.hero.is-black.is-bold{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}@media screen and (max-width: 768px){.hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg, #000 0%, #0a0a0a 71%, #181616 100%)}}.hero.is-light{background-color:#f5f5f5;color:rgba(0,0,0,0.7)}.hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-light strong{color:inherit}.hero.is-light .title{color:rgba(0,0,0,0.7)}.hero.is-light .subtitle{color:rgba(0,0,0,0.9)}.hero.is-light .subtitle a:not(.button),.hero.is-light .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){.hero.is-light .navbar-menu{background-color:#f5f5f5}}.hero.is-light .navbar-item,.hero.is-light .navbar-link{color:rgba(0,0,0,0.7)}.hero.is-light a.navbar-item:hover,.hero.is-light a.navbar-item.is-active,.hero.is-light .navbar-link:hover,.hero.is-light .navbar-link.is-active{background-color:#e8e8e8;color:rgba(0,0,0,0.7)}.hero.is-light .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}.hero.is-light .tabs a:hover{opacity:1}.hero.is-light .tabs li.is-active a{color:#f5f5f5 !important;opacity:1}.hero.is-light .tabs.is-boxed a,.hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,0.7)}.hero.is-light .tabs.is-boxed a:hover,.hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-light .tabs.is-boxed li.is-active a,.hero.is-light .tabs.is-boxed li.is-active a:hover,.hero.is-light .tabs.is-toggle li.is-active a,.hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#f5f5f5}.hero.is-light.is-bold{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}@media screen and (max-width: 768px){.hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg, #dfd8d9 0%, #f5f5f5 71%, #fff 100%)}}.hero.is-dark,.content kbd.hero{background-color:#363636;color:#fff}.hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-dark strong,.content kbd.hero strong{color:inherit}.hero.is-dark .title,.content kbd.hero .title{color:#fff}.hero.is-dark .subtitle,.content kbd.hero .subtitle{color:rgba(255,255,255,0.9)}.hero.is-dark .subtitle a:not(.button),.content kbd.hero .subtitle a:not(.button),.hero.is-dark .subtitle strong,.content kbd.hero .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-dark .navbar-menu,.content kbd.hero .navbar-menu{background-color:#363636}}.hero.is-dark .navbar-item,.content kbd.hero .navbar-item,.hero.is-dark .navbar-link,.content kbd.hero .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-dark a.navbar-item:hover,.content kbd.hero a.navbar-item:hover,.hero.is-dark a.navbar-item.is-active,.content kbd.hero a.navbar-item.is-active,.hero.is-dark .navbar-link:hover,.content kbd.hero .navbar-link:hover,.hero.is-dark .navbar-link.is-active,.content kbd.hero .navbar-link.is-active{background-color:#292929;color:#fff}.hero.is-dark .tabs a,.content kbd.hero .tabs a{color:#fff;opacity:0.9}.hero.is-dark .tabs a:hover,.content kbd.hero .tabs a:hover{opacity:1}.hero.is-dark .tabs li.is-active a,.content kbd.hero .tabs li.is-active a{color:#363636 !important;opacity:1}.hero.is-dark .tabs.is-boxed a,.content kbd.hero .tabs.is-boxed a,.hero.is-dark .tabs.is-toggle a,.content kbd.hero .tabs.is-toggle a{color:#fff}.hero.is-dark .tabs.is-boxed a:hover,.content kbd.hero .tabs.is-boxed a:hover,.hero.is-dark .tabs.is-toggle a:hover,.content kbd.hero .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-dark .tabs.is-boxed li.is-active a,.content kbd.hero .tabs.is-boxed li.is-active a,.hero.is-dark .tabs.is-boxed li.is-active a:hover,.hero.is-dark .tabs.is-toggle li.is-active a,.content kbd.hero .tabs.is-toggle li.is-active a,.hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#363636}.hero.is-dark.is-bold,.content kbd.hero.is-bold{background-image:linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%)}@media screen and (max-width: 768px){.hero.is-dark.is-bold .navbar-menu,.content kbd.hero.is-bold .navbar-menu{background-image:linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%)}}.hero.is-primary,.docstring>section>a.hero.docs-sourcelink{background-color:#4eb5de;color:#fff}.hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.docstring>section>a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-primary strong,.docstring>section>a.hero.docs-sourcelink strong{color:inherit}.hero.is-primary .title,.docstring>section>a.hero.docs-sourcelink .title{color:#fff}.hero.is-primary .subtitle,.docstring>section>a.hero.docs-sourcelink .subtitle{color:rgba(255,255,255,0.9)}.hero.is-primary .subtitle a:not(.button),.docstring>section>a.hero.docs-sourcelink .subtitle a:not(.button),.hero.is-primary .subtitle strong,.docstring>section>a.hero.docs-sourcelink .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-primary .navbar-menu,.docstring>section>a.hero.docs-sourcelink .navbar-menu{background-color:#4eb5de}}.hero.is-primary .navbar-item,.docstring>section>a.hero.docs-sourcelink .navbar-item,.hero.is-primary .navbar-link,.docstring>section>a.hero.docs-sourcelink .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-primary a.navbar-item:hover,.docstring>section>a.hero.docs-sourcelink a.navbar-item:hover,.hero.is-primary a.navbar-item.is-active,.docstring>section>a.hero.docs-sourcelink a.navbar-item.is-active,.hero.is-primary .navbar-link:hover,.docstring>section>a.hero.docs-sourcelink .navbar-link:hover,.hero.is-primary .navbar-link.is-active,.docstring>section>a.hero.docs-sourcelink .navbar-link.is-active{background-color:#39acda;color:#fff}.hero.is-primary .tabs a,.docstring>section>a.hero.docs-sourcelink .tabs a{color:#fff;opacity:0.9}.hero.is-primary .tabs a:hover,.docstring>section>a.hero.docs-sourcelink .tabs a:hover{opacity:1}.hero.is-primary .tabs li.is-active a,.docstring>section>a.hero.docs-sourcelink .tabs li.is-active a{color:#4eb5de !important;opacity:1}.hero.is-primary .tabs.is-boxed a,.docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a,.hero.is-primary .tabs.is-toggle a,.docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a{color:#fff}.hero.is-primary .tabs.is-boxed a:hover,.docstring>section>a.hero.docs-sourcelink .tabs.is-boxed a:hover,.hero.is-primary .tabs.is-toggle a:hover,.docstring>section>a.hero.docs-sourcelink .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-primary .tabs.is-boxed li.is-active a,.docstring>section>a.hero.docs-sourcelink .tabs.is-boxed li.is-active a,.hero.is-primary .tabs.is-boxed li.is-active a:hover,.hero.is-primary .tabs.is-toggle li.is-active a,.docstring>section>a.hero.docs-sourcelink .tabs.is-toggle li.is-active a,.hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#4eb5de}.hero.is-primary.is-bold,.docstring>section>a.hero.is-bold.docs-sourcelink{background-image:linear-gradient(141deg, #1bc7de 0%, #4eb5de 71%, #5fa9e7 100%)}@media screen and (max-width: 768px){.hero.is-primary.is-bold .navbar-menu,.docstring>section>a.hero.is-bold.docs-sourcelink .navbar-menu{background-image:linear-gradient(141deg, #1bc7de 0%, #4eb5de 71%, #5fa9e7 100%)}}.hero.is-link{background-color:#2e63b8;color:#fff}.hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-link strong{color:inherit}.hero.is-link .title{color:#fff}.hero.is-link .subtitle{color:rgba(255,255,255,0.9)}.hero.is-link .subtitle a:not(.button),.hero.is-link .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-link .navbar-menu{background-color:#2e63b8}}.hero.is-link .navbar-item,.hero.is-link .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-link a.navbar-item:hover,.hero.is-link a.navbar-item.is-active,.hero.is-link .navbar-link:hover,.hero.is-link .navbar-link.is-active{background-color:#2958a4;color:#fff}.hero.is-link .tabs a{color:#fff;opacity:0.9}.hero.is-link .tabs a:hover{opacity:1}.hero.is-link .tabs li.is-active a{color:#2e63b8 !important;opacity:1}.hero.is-link .tabs.is-boxed a,.hero.is-link .tabs.is-toggle a{color:#fff}.hero.is-link .tabs.is-boxed a:hover,.hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-link .tabs.is-boxed li.is-active a,.hero.is-link .tabs.is-boxed li.is-active a:hover,.hero.is-link .tabs.is-toggle li.is-active a,.hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#2e63b8}.hero.is-link.is-bold{background-image:linear-gradient(141deg, #1b6098 0%, #2e63b8 71%, #2d51d2 100%)}@media screen and (max-width: 768px){.hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg, #1b6098 0%, #2e63b8 71%, #2d51d2 100%)}}.hero.is-info{background-color:#209cee;color:#fff}.hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-info strong{color:inherit}.hero.is-info .title{color:#fff}.hero.is-info .subtitle{color:rgba(255,255,255,0.9)}.hero.is-info .subtitle a:not(.button),.hero.is-info .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-info .navbar-menu{background-color:#209cee}}.hero.is-info .navbar-item,.hero.is-info .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-info a.navbar-item:hover,.hero.is-info a.navbar-item.is-active,.hero.is-info .navbar-link:hover,.hero.is-info .navbar-link.is-active{background-color:#1190e3;color:#fff}.hero.is-info .tabs a{color:#fff;opacity:0.9}.hero.is-info .tabs a:hover{opacity:1}.hero.is-info .tabs li.is-active a{color:#209cee !important;opacity:1}.hero.is-info .tabs.is-boxed a,.hero.is-info .tabs.is-toggle a{color:#fff}.hero.is-info .tabs.is-boxed a:hover,.hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-info .tabs.is-boxed li.is-active a,.hero.is-info .tabs.is-boxed li.is-active a:hover,.hero.is-info .tabs.is-toggle li.is-active a,.hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#209cee}.hero.is-info.is-bold{background-image:linear-gradient(141deg, #05a6d6 0%, #209cee 71%, #3287f5 100%)}@media screen and (max-width: 768px){.hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg, #05a6d6 0%, #209cee 71%, #3287f5 100%)}}.hero.is-success{background-color:#22c35b;color:#fff}.hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-success strong{color:inherit}.hero.is-success .title{color:#fff}.hero.is-success .subtitle{color:rgba(255,255,255,0.9)}.hero.is-success .subtitle a:not(.button),.hero.is-success .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-success .navbar-menu{background-color:#22c35b}}.hero.is-success .navbar-item,.hero.is-success .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-success a.navbar-item:hover,.hero.is-success a.navbar-item.is-active,.hero.is-success .navbar-link:hover,.hero.is-success .navbar-link.is-active{background-color:#1ead51;color:#fff}.hero.is-success .tabs a{color:#fff;opacity:0.9}.hero.is-success .tabs a:hover{opacity:1}.hero.is-success .tabs li.is-active a{color:#22c35b !important;opacity:1}.hero.is-success .tabs.is-boxed a,.hero.is-success .tabs.is-toggle a{color:#fff}.hero.is-success .tabs.is-boxed a:hover,.hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-success .tabs.is-boxed li.is-active a,.hero.is-success .tabs.is-boxed li.is-active a:hover,.hero.is-success .tabs.is-toggle li.is-active a,.hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#22c35b}.hero.is-success.is-bold{background-image:linear-gradient(141deg, #12a02c 0%, #22c35b 71%, #1fdf83 100%)}@media screen and (max-width: 768px){.hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg, #12a02c 0%, #22c35b 71%, #1fdf83 100%)}}.hero.is-warning{background-color:#ffdd57;color:rgba(0,0,0,0.7)}.hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-warning strong{color:inherit}.hero.is-warning .title{color:rgba(0,0,0,0.7)}.hero.is-warning .subtitle{color:rgba(0,0,0,0.9)}.hero.is-warning .subtitle a:not(.button),.hero.is-warning .subtitle strong{color:rgba(0,0,0,0.7)}@media screen and (max-width: 1055px){.hero.is-warning .navbar-menu{background-color:#ffdd57}}.hero.is-warning .navbar-item,.hero.is-warning .navbar-link{color:rgba(0,0,0,0.7)}.hero.is-warning a.navbar-item:hover,.hero.is-warning a.navbar-item.is-active,.hero.is-warning .navbar-link:hover,.hero.is-warning .navbar-link.is-active{background-color:#ffd83e;color:rgba(0,0,0,0.7)}.hero.is-warning .tabs a{color:rgba(0,0,0,0.7);opacity:0.9}.hero.is-warning .tabs a:hover{opacity:1}.hero.is-warning .tabs li.is-active a{color:#ffdd57 !important;opacity:1}.hero.is-warning .tabs.is-boxed a,.hero.is-warning .tabs.is-toggle a{color:rgba(0,0,0,0.7)}.hero.is-warning .tabs.is-boxed a:hover,.hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-warning .tabs.is-boxed li.is-active a,.hero.is-warning .tabs.is-boxed li.is-active a:hover,.hero.is-warning .tabs.is-toggle li.is-active a,.hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,0.7);border-color:rgba(0,0,0,0.7);color:#ffdd57}.hero.is-warning.is-bold{background-image:linear-gradient(141deg, #ffae24 0%, #ffdd57 71%, #fffa71 100%)}@media screen and (max-width: 768px){.hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg, #ffae24 0%, #ffdd57 71%, #fffa71 100%)}}.hero.is-danger{background-color:#da0b00;color:#fff}.hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-danger strong{color:inherit}.hero.is-danger .title{color:#fff}.hero.is-danger .subtitle{color:rgba(255,255,255,0.9)}.hero.is-danger .subtitle a:not(.button),.hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width: 1055px){.hero.is-danger .navbar-menu{background-color:#da0b00}}.hero.is-danger .navbar-item,.hero.is-danger .navbar-link{color:rgba(255,255,255,0.7)}.hero.is-danger a.navbar-item:hover,.hero.is-danger a.navbar-item.is-active,.hero.is-danger .navbar-link:hover,.hero.is-danger .navbar-link.is-active{background-color:#c10a00;color:#fff}.hero.is-danger .tabs a{color:#fff;opacity:0.9}.hero.is-danger .tabs a:hover{opacity:1}.hero.is-danger .tabs li.is-active a{color:#da0b00 !important;opacity:1}.hero.is-danger .tabs.is-boxed a,.hero.is-danger .tabs.is-toggle a{color:#fff}.hero.is-danger .tabs.is-boxed a:hover,.hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,0.1)}.hero.is-danger .tabs.is-boxed li.is-active a,.hero.is-danger .tabs.is-boxed li.is-active a:hover,.hero.is-danger .tabs.is-toggle li.is-active a,.hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#da0b00}.hero.is-danger.is-bold{background-image:linear-gradient(141deg, #a70013 0%, #da0b00 71%, #f43500 100%)}@media screen and (max-width: 768px){.hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg, #a70013 0%, #da0b00 71%, #f43500 100%)}}.hero.is-small .hero-body,#documenter .docs-sidebar form.docs-search>input.hero .hero-body{padding:1.5rem}@media screen and (min-width: 769px),print{.hero.is-medium .hero-body{padding:9rem 4.5rem}}@media screen and (min-width: 769px),print{.hero.is-large .hero-body{padding:18rem 6rem}}.hero.is-halfheight .hero-body,.hero.is-fullheight .hero-body,.hero.is-fullheight-with-navbar .hero-body{align-items:center;display:flex}.hero.is-halfheight .hero-body>.container,.hero.is-fullheight .hero-body>.container,.hero.is-fullheight-with-navbar .hero-body>.container{flex-grow:1;flex-shrink:1}.hero.is-halfheight{min-height:50vh}.hero.is-fullheight{min-height:100vh}.hero-video{overflow:hidden}.hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%, -50%, 0)}.hero-video.is-transparent{opacity:0.3}@media screen and (max-width: 768px){.hero-video{display:none}}.hero-buttons{margin-top:1.5rem}@media screen and (max-width: 768px){.hero-buttons .button{display:flex}.hero-buttons .button:not(:last-child){margin-bottom:0.75rem}}@media screen and (min-width: 769px),print{.hero-buttons{display:flex;justify-content:center}.hero-buttons .button:not(:last-child){margin-right:1.5rem}}.hero-head,.hero-foot{flex-grow:0;flex-shrink:0}.hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}@media screen and (min-width: 769px),print{.hero-body{padding:3rem 3rem}}.section{padding:3rem 1.5rem}@media screen and (min-width: 1056px){.section{padding:3rem 3rem}.section.is-medium{padding:9rem 4.5rem}.section.is-large{padding:18rem 6rem}}.footer{background-color:#fafafa;padding:3rem 1.5rem 6rem}h1 .docs-heading-anchor,h1 .docs-heading-anchor:hover,h1 .docs-heading-anchor:visited,h2 .docs-heading-anchor,h2 .docs-heading-anchor:hover,h2 .docs-heading-anchor:visited,h3 .docs-heading-anchor,h3 .docs-heading-anchor:hover,h3 .docs-heading-anchor:visited,h4 .docs-heading-anchor,h4 .docs-heading-anchor:hover,h4 .docs-heading-anchor:visited,h5 .docs-heading-anchor,h5 .docs-heading-anchor:hover,h5 .docs-heading-anchor:visited,h6 .docs-heading-anchor,h6 .docs-heading-anchor:hover,h6 .docs-heading-anchor:visited{color:#222}h1 .docs-heading-anchor-permalink,h2 .docs-heading-anchor-permalink,h3 .docs-heading-anchor-permalink,h4 .docs-heading-anchor-permalink,h5 .docs-heading-anchor-permalink,h6 .docs-heading-anchor-permalink{visibility:hidden;vertical-align:middle;margin-left:0.5em;font-size:0.7rem}h1 .docs-heading-anchor-permalink::before,h2 .docs-heading-anchor-permalink::before,h3 .docs-heading-anchor-permalink::before,h4 .docs-heading-anchor-permalink::before,h5 .docs-heading-anchor-permalink::before,h6 .docs-heading-anchor-permalink::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f0c1"}h1:hover .docs-heading-anchor-permalink,h2:hover .docs-heading-anchor-permalink,h3:hover .docs-heading-anchor-permalink,h4:hover .docs-heading-anchor-permalink,h5:hover .docs-heading-anchor-permalink,h6:hover .docs-heading-anchor-permalink{visibility:visible}.docs-dark-only{display:none !important}pre{position:relative;overflow:hidden}pre code,pre code.hljs{padding:0 .75rem !important;overflow:auto;display:block}pre code:first-of-type,pre code.hljs:first-of-type{padding-top:0.5rem !important}pre code:last-of-type,pre code.hljs:last-of-type{padding-bottom:0.5rem !important}pre .copy-button{opacity:0.2;transition:opacity 0.2s;position:absolute;right:0em;top:0em;padding:0.5em;width:2.5em;height:2.5em;background:transparent;border:none;font-family:"Font Awesome 6 Free";color:#222;cursor:pointer;text-align:center}pre .copy-button:focus,pre .copy-button:hover{opacity:1;background:rgba(34,34,34,0.1);color:#2e63b8}pre .copy-button.success{color:#259a12;opacity:1}pre .copy-button.error{color:#cb3c33;opacity:1}pre:hover .copy-button{opacity:1}.admonition{background-color:#b5b5b5;border-style:solid;border-width:1px;border-color:#363636;border-radius:4px;font-size:1rem}.admonition strong{color:currentColor}.admonition.is-small,#documenter .docs-sidebar form.docs-search>input.admonition{font-size:.75rem}.admonition.is-medium{font-size:1.25rem}.admonition.is-large{font-size:1.5rem}.admonition.is-default{background-color:#b5b5b5;border-color:#363636}.admonition.is-default>.admonition-header{background-color:#363636;color:#fff}.admonition.is-default>.admonition-body{color:#fff}.admonition.is-info{background-color:#def0fc;border-color:#209cee}.admonition.is-info>.admonition-header{background-color:#209cee;color:#fff}.admonition.is-info>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-success{background-color:#bdf4d1;border-color:#22c35b}.admonition.is-success>.admonition-header{background-color:#22c35b;color:#fff}.admonition.is-success>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-warning{background-color:#fff3c5;border-color:#ffdd57}.admonition.is-warning>.admonition-header{background-color:#ffdd57;color:rgba(0,0,0,0.7)}.admonition.is-warning>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-danger{background-color:#ffaba7;border-color:#da0b00}.admonition.is-danger>.admonition-header{background-color:#da0b00;color:#fff}.admonition.is-danger>.admonition-body{color:rgba(0,0,0,0.7)}.admonition.is-compat{background-color:#bdeff5;border-color:#1db5c9}.admonition.is-compat>.admonition-header{background-color:#1db5c9;color:#fff}.admonition.is-compat>.admonition-body{color:rgba(0,0,0,0.7)}.admonition-header{color:#fff;background-color:#363636;align-items:center;font-weight:700;justify-content:space-between;line-height:1.25;padding:0.5rem .75rem;position:relative}.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;margin-right:.75rem;content:"\f06a"}details.admonition.is-details>.admonition-header{list-style:none}details.admonition.is-details>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f055"}details.admonition.is-details[open]>.admonition-header:before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f056"}.admonition-body{color:#222;padding:0.5rem .75rem}.admonition-body pre{background-color:#f5f5f5}.admonition-body code{background-color:rgba(0,0,0,0.05)}.docstring{margin-bottom:1em;background-color:rgba(0,0,0,0);border:1px solid #dbdbdb;box-shadow:2px 2px 3px rgba(10,10,10,0.1);max-width:100%}.docstring>header{cursor:pointer;display:flex;flex-grow:1;align-items:stretch;padding:0.5rem .75rem;background-color:#f5f5f5;box-shadow:0 0.125em 0.25em rgba(10,10,10,0.1);box-shadow:none;border-bottom:1px solid #dbdbdb}.docstring>header code{background-color:transparent}.docstring>header .docstring-article-toggle-button{min-width:1.1rem;padding:0.2rem 0.2rem 0.2rem 0}.docstring>header .docstring-binding{margin-right:0.3em}.docstring>header .docstring-category{margin-left:0.3em}.docstring>section{position:relative;padding:.75rem .75rem;border-bottom:1px solid #dbdbdb}.docstring>section:last-child{border-bottom:none}.docstring>section>a.docs-sourcelink{transition:opacity 0.3s;opacity:0;position:absolute;right:.375rem;bottom:.375rem}.docstring>section>a.docs-sourcelink:focus{opacity:1 !important}.docstring:hover>section>a.docs-sourcelink{opacity:0.2}.docstring:focus-within>section>a.docs-sourcelink{opacity:0.2}.docstring>section:hover a.docs-sourcelink{opacity:1}.documenter-example-output{background-color:#fff}.outdated-warning-overlay{position:fixed;top:0;left:0;right:0;box-shadow:0 0 10px rgba(0,0,0,0.3);z-index:999;background-color:#ffaba7;color:rgba(0,0,0,0.7);border-bottom:3px solid #da0b00;padding:10px 35px;text-align:center;font-size:15px}.outdated-warning-overlay .outdated-warning-closer{position:absolute;top:calc(50% - 10px);right:18px;cursor:pointer;width:12px}.outdated-warning-overlay a{color:#2e63b8}.outdated-warning-overlay a:hover{color:#363636}.content pre{border:1px solid #dbdbdb}.content code{font-weight:inherit}.content a code{color:#2e63b8}.content h1 code,.content h2 code,.content h3 code,.content h4 code,.content h5 code,.content h6 code{color:#222}.content table{display:block;width:initial;max-width:100%;overflow-x:auto}.content blockquote>ul:first-child,.content blockquote>ol:first-child,.content .admonition-body>ul:first-child,.content .admonition-body>ol:first-child{margin-top:0}pre,code{font-variant-ligatures:no-contextual}.breadcrumb a.is-disabled{cursor:default;pointer-events:none}.breadcrumb a.is-disabled,.breadcrumb a.is-disabled:hover{color:#222}.hljs{background:initial !important}.katex .katex-mathml{top:0;right:0}.katex-display,mjx-container,.MathJax_Display{margin:0.5em 0 !important}html{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto}li.no-marker{list-style:none}#documenter .docs-main>article{overflow-wrap:break-word}#documenter .docs-main>article .math-container{overflow-x:auto;overflow-y:hidden}@media screen and (min-width: 1056px){#documenter .docs-main{max-width:52rem;margin-left:20rem;padding-right:1rem}}@media screen and (max-width: 1055px){#documenter .docs-main{width:100%}#documenter .docs-main>article{max-width:52rem;margin-left:auto;margin-right:auto;margin-bottom:1rem;padding:0 1rem}#documenter .docs-main>header,#documenter .docs-main>nav{max-width:100%;width:100%;margin:0}}#documenter .docs-main header.docs-navbar{background-color:#fff;border-bottom:1px solid #dbdbdb;z-index:2;min-height:4rem;margin-bottom:1rem;display:flex}#documenter .docs-main header.docs-navbar .breadcrumb{flex-grow:1}#documenter .docs-main header.docs-navbar .docs-sidebar-button{display:block;font-size:1.5rem;padding-bottom:0.1rem;margin-right:1rem}#documenter .docs-main header.docs-navbar .docs-right{display:flex;white-space:nowrap;gap:1rem;align-items:center}#documenter .docs-main header.docs-navbar .docs-right .docs-icon,#documenter .docs-main header.docs-navbar .docs-right .docs-label{display:inline-block}#documenter .docs-main header.docs-navbar .docs-right .docs-label{padding:0;margin-left:0.3em}@media screen and (max-width: 1055px){#documenter .docs-main header.docs-navbar .docs-right .docs-navbar-link{margin-left:0.4rem;margin-right:0.4rem}}#documenter .docs-main header.docs-navbar>*{margin:auto 0}@media screen and (max-width: 1055px){#documenter .docs-main header.docs-navbar{position:sticky;top:0;padding:0 1rem;transition-property:top, box-shadow;-webkit-transition-property:top, box-shadow;transition-duration:0.3s;-webkit-transition-duration:0.3s}#documenter .docs-main header.docs-navbar.headroom--not-top{box-shadow:.2rem 0rem .4rem #bbb;transition-duration:0.7s;-webkit-transition-duration:0.7s}#documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom{top:-4.5rem;transition-duration:0.7s;-webkit-transition-duration:0.7s}}#documenter .docs-main section.footnotes{border-top:1px solid #dbdbdb}#documenter .docs-main section.footnotes li .tag:first-child,#documenter .docs-main section.footnotes li .docstring>section>a.docs-sourcelink:first-child,#documenter .docs-main section.footnotes li .content kbd:first-child,.content #documenter .docs-main section.footnotes li kbd:first-child{margin-right:1em;margin-bottom:0.4em}#documenter .docs-main .docs-footer{display:flex;flex-wrap:wrap;margin-left:0;margin-right:0;border-top:1px solid #dbdbdb;padding-top:1rem;padding-bottom:1rem}@media screen and (max-width: 1055px){#documenter .docs-main .docs-footer{padding-left:1rem;padding-right:1rem}}#documenter .docs-main .docs-footer .docs-footer-nextpage,#documenter .docs-main .docs-footer .docs-footer-prevpage{flex-grow:1}#documenter .docs-main .docs-footer .docs-footer-nextpage{text-align:right}#documenter .docs-main .docs-footer .flexbox-break{flex-basis:100%;height:0}#documenter .docs-main .docs-footer .footer-message{font-size:0.8em;margin:0.5em auto 0 auto;text-align:center}#documenter .docs-sidebar{display:flex;flex-direction:column;color:#0a0a0a;background-color:#f5f5f5;border-right:1px solid #dbdbdb;padding:0;flex:0 0 18rem;z-index:5;font-size:1rem;position:fixed;left:-18rem;width:18rem;height:100%;transition:left 0.3s}#documenter .docs-sidebar.visible{left:0;box-shadow:.4rem 0rem .8rem #bbb}@media screen and (min-width: 1056px){#documenter .docs-sidebar.visible{box-shadow:none}}@media screen and (min-width: 1056px){#documenter .docs-sidebar{left:0;top:0}}#documenter .docs-sidebar .docs-logo{margin-top:1rem;padding:0 1rem}#documenter .docs-sidebar .docs-logo>img{max-height:6rem;margin:auto}#documenter .docs-sidebar .docs-package-name{flex-shrink:0;font-size:1.5rem;font-weight:700;text-align:center;white-space:nowrap;overflow:hidden;padding:0.5rem 0}#documenter .docs-sidebar .docs-package-name .docs-autofit{max-width:16.2rem}#documenter .docs-sidebar .docs-package-name a,#documenter .docs-sidebar .docs-package-name a:hover{color:#0a0a0a}#documenter .docs-sidebar .docs-version-selector{border-top:1px solid #dbdbdb;display:none;padding:0.5rem}#documenter .docs-sidebar .docs-version-selector.visible{display:flex}#documenter .docs-sidebar ul.docs-menu{flex-grow:1;user-select:none;border-top:1px solid #dbdbdb;padding-bottom:1.5rem}#documenter .docs-sidebar ul.docs-menu>li>.tocitem{font-weight:bold}#documenter .docs-sidebar ul.docs-menu>li li{font-size:.95rem;margin-left:1em;border-left:1px solid #dbdbdb}#documenter .docs-sidebar ul.docs-menu input.collapse-toggle{display:none}#documenter .docs-sidebar ul.docs-menu ul.collapsed{display:none}#documenter .docs-sidebar ul.docs-menu input:checked~ul.collapsed{display:block}#documenter .docs-sidebar ul.docs-menu label.tocitem{display:flex}#documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label{flex-grow:2}#documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron{display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;font-size:.75rem;margin-left:1rem;margin-top:auto;margin-bottom:auto}#documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before{font-family:"Font Awesome 6 Free";font-weight:900;content:"\f054"}#documenter .docs-sidebar ul.docs-menu input:checked~label.tocitem .docs-chevron::before{content:"\f078"}#documenter .docs-sidebar ul.docs-menu .tocitem{display:block;padding:0.5rem 0.5rem}#documenter .docs-sidebar ul.docs-menu .tocitem,#documenter .docs-sidebar ul.docs-menu .tocitem:hover{color:#0a0a0a;background:#f5f5f5}#documenter .docs-sidebar ul.docs-menu a.tocitem:hover,#documenter .docs-sidebar ul.docs-menu label.tocitem:hover{color:#0a0a0a;background-color:#ebebeb}#documenter .docs-sidebar ul.docs-menu li.is-active{border-top:1px solid #dbdbdb;border-bottom:1px solid #dbdbdb;background-color:#fff}#documenter .docs-sidebar ul.docs-menu li.is-active .tocitem,#documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover{background-color:#fff;color:#0a0a0a}#documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover{background-color:#ebebeb;color:#0a0a0a}#documenter .docs-sidebar ul.docs-menu>li.is-active:first-child{border-top:none}#documenter .docs-sidebar ul.docs-menu ul.internal{margin:0 0.5rem 0.5rem;border-top:1px solid #dbdbdb}#documenter .docs-sidebar ul.docs-menu ul.internal li{font-size:.85rem;border-left:none;margin-left:0;margin-top:0.5rem}#documenter .docs-sidebar ul.docs-menu ul.internal .tocitem{width:100%;padding:0}#documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before{content:"⚬";margin-right:0.4em}#documenter .docs-sidebar form.docs-search{margin:auto;margin-top:0.5rem;margin-bottom:0.5rem}#documenter .docs-sidebar form.docs-search>input{width:14.4rem}#documenter .docs-sidebar #documenter-search-query{color:#707070;width:14.4rem;box-shadow:inset 0 1px 2px rgba(10,10,10,0.1)}@media screen and (min-width: 1056px){#documenter .docs-sidebar ul.docs-menu{overflow-y:auto;-webkit-overflow-scroll:touch}#documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar{width:.3rem;background:none}#documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#e0e0e0}#documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover{background:#ccc}}@media screen and (max-width: 1055px){#documenter .docs-sidebar{overflow-y:auto;-webkit-overflow-scroll:touch}#documenter .docs-sidebar::-webkit-scrollbar{width:.3rem;background:none}#documenter .docs-sidebar::-webkit-scrollbar-thumb{border-radius:5px 0px 0px 5px;background:#e0e0e0}#documenter .docs-sidebar::-webkit-scrollbar-thumb:hover{background:#ccc}}kbd.search-modal-key-hints{border-radius:0.25rem;border:1px solid rgba(0,0,0,0.6);box-shadow:0 2px 0 1px rgba(0,0,0,0.6);cursor:default;font-size:0.9rem;line-height:1.5;min-width:0.75rem;text-align:center;padding:0.1rem 0.3rem;position:relative;top:-1px}.search-min-width-50{min-width:50%}.search-min-height-100{min-height:100%}.search-modal-card-body{max-height:calc(100vh - 15rem)}.search-result-link{border-radius:0.7em;transition:all 300ms}.search-result-link:hover,.search-result-link:focus{background-color:rgba(0,128,128,0.1)}.search-result-link .property-search-result-badge,.search-result-link .search-filter{transition:all 300ms}.property-search-result-badge,.search-filter{padding:0.15em 0.5em;font-size:0.8em;font-style:italic;text-transform:none !important;line-height:1.5;color:#f5f5f5;background-color:rgba(51,65,85,0.501961);border-radius:0.6rem}.search-result-link:hover .property-search-result-badge,.search-result-link:hover .search-filter,.search-result-link:focus .property-search-result-badge,.search-result-link:focus .search-filter{color:#f1f5f9;background-color:#333}.search-filter{color:#333;background-color:#f5f5f5;transition:all 300ms}.search-filter:hover,.search-filter:focus{color:#333}.search-filter-selected{color:#f5f5f5;background-color:rgba(139,0,139,0.5)}.search-filter-selected:hover,.search-filter-selected:focus{color:#f5f5f5}.search-result-highlight{background-color:#ffdd57;color:black}.search-divider{border-bottom:1px solid #dbdbdb}.search-result-title{width:85%;color:#333}.search-result-code-title{font-size:0.875rem;font-family:"JuliaMono","SFMono-Regular","Menlo","Consolas","Liberation Mono","DejaVu Sans Mono",monospace}#search-modal .modal-card-body::-webkit-scrollbar,#search-modal .filter-tabs::-webkit-scrollbar{height:10px;width:10px;background-color:transparent}#search-modal .modal-card-body::-webkit-scrollbar-thumb,#search-modal .filter-tabs::-webkit-scrollbar-thumb{background-color:gray;border-radius:1rem}#search-modal .modal-card-body::-webkit-scrollbar-track,#search-modal .filter-tabs::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,0.6);background-color:transparent}.w-100{width:100%}.gap-2{gap:0.5rem}.gap-4{gap:1rem}.gap-8{gap:2rem}.ansi span.sgr1{font-weight:bolder}.ansi span.sgr2{font-weight:lighter}.ansi span.sgr3{font-style:italic}.ansi span.sgr4{text-decoration:underline}.ansi span.sgr7{color:#fff;background-color:#222}.ansi span.sgr8{color:transparent}.ansi span.sgr8 span{color:transparent}.ansi span.sgr9{text-decoration:line-through}.ansi span.sgr30{color:#242424}.ansi span.sgr31{color:#a7201f}.ansi span.sgr32{color:#066f00}.ansi span.sgr33{color:#856b00}.ansi span.sgr34{color:#2149b0}.ansi span.sgr35{color:#7d4498}.ansi span.sgr36{color:#007989}.ansi span.sgr37{color:gray}.ansi span.sgr40{background-color:#242424}.ansi span.sgr41{background-color:#a7201f}.ansi span.sgr42{background-color:#066f00}.ansi span.sgr43{background-color:#856b00}.ansi span.sgr44{background-color:#2149b0}.ansi span.sgr45{background-color:#7d4498}.ansi span.sgr46{background-color:#007989}.ansi span.sgr47{background-color:gray}.ansi span.sgr90{color:#616161}.ansi span.sgr91{color:#cb3c33}.ansi span.sgr92{color:#0e8300}.ansi span.sgr93{color:#a98800}.ansi span.sgr94{color:#3c5dcd}.ansi span.sgr95{color:#9256af}.ansi span.sgr96{color:#008fa3}.ansi span.sgr97{color:#f5f5f5}.ansi span.sgr100{background-color:#616161}.ansi span.sgr101{background-color:#cb3c33}.ansi span.sgr102{background-color:#0e8300}.ansi span.sgr103{background-color:#a98800}.ansi span.sgr104{background-color:#3c5dcd}.ansi span.sgr105{background-color:#9256af}.ansi span.sgr106{background-color:#008fa3}.ansi span.sgr107{background-color:#f5f5f5}code.language-julia-repl>span.hljs-meta{color:#066f00;font-weight:bolder}/*! + Theme: Default + Description: Original highlight.js style + Author: (c) Ivan Sagalaev + Maintainer: @highlightjs/core-team + Website: https://highlightjs.org/ + License: see project LICENSE + Touched: 2021 +*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#F3F3F3;color:#444}.hljs-comment{color:#697070}.hljs-tag,.hljs-punctuation{color:#444a}.hljs-tag .hljs-name,.hljs-tag .hljs-attr{color:#444}.hljs-keyword,.hljs-attribute,.hljs-selector-tag,.hljs-meta .hljs-keyword,.hljs-doctag,.hljs-name{font-weight:bold}.hljs-type,.hljs-string,.hljs-number,.hljs-selector-id,.hljs-selector-class,.hljs-quote,.hljs-template-tag,.hljs-deletion{color:#880000}.hljs-title,.hljs-section{color:#880000;font-weight:bold}.hljs-regexp,.hljs-symbol,.hljs-variable,.hljs-template-variable,.hljs-link,.hljs-selector-attr,.hljs-operator,.hljs-selector-pseudo{color:#ab5656}.hljs-literal{color:#695}.hljs-built_in,.hljs-bullet,.hljs-code,.hljs-addition{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta .hljs-string{color:#38a}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:bold} diff --git a/v0.8.79/assets/themeswap.js b/v0.8.79/assets/themeswap.js new file mode 100644 index 0000000000..9f5eebe6aa --- /dev/null +++ b/v0.8.79/assets/themeswap.js @@ -0,0 +1,84 @@ +// Small function to quickly swap out themes. Gets put into the tag.. +function set_theme_from_local_storage() { + // Initialize the theme to null, which means default + var theme = null; + // If the browser supports the localstorage and is not disabled then try to get the + // documenter theme + if (window.localStorage != null) { + // Get the user-picked theme from localStorage. May be `null`, which means the default + // theme. + theme = window.localStorage.getItem("documenter-theme"); + } + // Check if the users preference is for dark color scheme + var darkPreference = + window.matchMedia("(prefers-color-scheme: dark)").matches === true; + // Initialize a few variables for the loop: + // + // - active: will contain the index of the theme that should be active. Note that there + // is no guarantee that localStorage contains sane values. If `active` stays `null` + // we either could not find the theme or it is the default (primary) theme anyway. + // Either way, we then need to stick to the primary theme. + // + // - disabled: style sheets that should be disabled (i.e. all the theme style sheets + // that are not the currently active theme) + var active = null; + var disabled = []; + var primaryLightTheme = null; + var primaryDarkTheme = null; + for (var i = 0; i < document.styleSheets.length; i++) { + var ss = document.styleSheets[i]; + // The tag of each style sheet is expected to have a data-theme-name attribute + // which must contain the name of the theme. The names in localStorage much match this. + var themename = ss.ownerNode.getAttribute("data-theme-name"); + // attribute not set => non-theme stylesheet => ignore + if (themename === null) continue; + // To distinguish the default (primary) theme, it needs to have the data-theme-primary + // attribute set. + if (ss.ownerNode.getAttribute("data-theme-primary") !== null) { + primaryLightTheme = themename; + } + // Check if the theme is primary dark theme so that we could store its name in darkTheme + if (ss.ownerNode.getAttribute("data-theme-primary-dark") !== null) { + primaryDarkTheme = themename; + } + // If we find a matching theme (and it's not the default), we'll set active to non-null + if (themename === theme) active = i; + // Store the style sheets of inactive themes so that we could disable them + if (themename !== theme) disabled.push(ss); + } + var activeTheme = null; + if (active !== null) { + // If we did find an active theme, we'll (1) add the theme--$(theme) class to + document.getElementsByTagName("html")[0].className = "theme--" + theme; + activeTheme = theme; + } else { + // If we did _not_ find an active theme, then we need to fall back to the primary theme + // which can either be dark or light, depending on the user's OS preference. + var activeTheme = darkPreference ? primaryDarkTheme : primaryLightTheme; + // In case it somehow happens that the relevant primary theme was not found in the + // preceding loop, we abort without doing anything. + if (activeTheme === null) { + console.error("Unable to determine primary theme."); + return; + } + // When switching to the primary light theme, then we must not have a class name + // for the tag. That's only for non-primary or the primary dark theme. + if (darkPreference) { + document.getElementsByTagName("html")[0].className = + "theme--" + activeTheme; + } else { + document.getElementsByTagName("html")[0].className = ""; + } + } + for (var i = 0; i < document.styleSheets.length; i++) { + var ss = document.styleSheets[i]; + // The tag of each style sheet is expected to have a data-theme-name attribute + // which must contain the name of the theme. The names in localStorage much match this. + var themename = ss.ownerNode.getAttribute("data-theme-name"); + // attribute not set => non-theme stylesheet => ignore + if (themename === null) continue; + // we'll disable all the stylesheets, except for the active one + ss.disabled = !(themename == activeTheme); + } +} +set_theme_from_local_storage(); diff --git a/v0.8.79/assets/warner.js b/v0.8.79/assets/warner.js new file mode 100644 index 0000000000..3f6f5d0083 --- /dev/null +++ b/v0.8.79/assets/warner.js @@ -0,0 +1,52 @@ +function maybeAddWarning() { + // DOCUMENTER_NEWEST is defined in versions.js, DOCUMENTER_CURRENT_VERSION and DOCUMENTER_STABLE + // in siteinfo.js. + // If either of these are undefined something went horribly wrong, so we abort. + if ( + window.DOCUMENTER_NEWEST === undefined || + window.DOCUMENTER_CURRENT_VERSION === undefined || + window.DOCUMENTER_STABLE === undefined + ) { + return; + } + + // Current version is not a version number, so we can't tell if it's the newest version. Abort. + if (!/v(\d+\.)*\d+/.test(window.DOCUMENTER_CURRENT_VERSION)) { + return; + } + + // Current version is newest version, so no need to add a warning. + if (window.DOCUMENTER_NEWEST === window.DOCUMENTER_CURRENT_VERSION) { + return; + } + + // Add a noindex meta tag (unless one exists) so that search engines don't index this version of the docs. + if (document.body.querySelector('meta[name="robots"]') === null) { + const meta = document.createElement("meta"); + meta.name = "robots"; + meta.content = "noindex"; + + document.getElementsByTagName("head")[0].appendChild(meta); + } + + const div = document.createElement("div"); + div.classList.add("outdated-warning-overlay"); + const closer = document.createElement("button"); + closer.classList.add("outdated-warning-closer", "delete"); + closer.addEventListener("click", function () { + document.body.removeChild(div); + }); + const href = window.documenterBaseURL + "/../" + window.DOCUMENTER_STABLE; + div.innerHTML = + 'This documentation is not for the latest stable release, but for either the development version or an older release.
    Click here to go to the documentation for the latest stable release.'; + div.appendChild(closer); + document.body.appendChild(div); +} + +if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", maybeAddWarning); +} else { + maybeAddWarning(); +} diff --git a/v0.8.79/features/atlases.html b/v0.8.79/features/atlases.html new file mode 100644 index 0000000000..cf465da578 --- /dev/null +++ b/v0.8.79/features/atlases.html @@ -0,0 +1,47 @@ + +Atlases and charts · Manifolds.jl

    Atlases and charts

    Atlases on an $n$-dimensional manifold $\mathcal M$ are collections of charts $\mathcal A = \{(U_i, φ_i) \colon i \in I\}$, where $I$ is a (finite or infinte) index family, such that $U_i \subseteq \mathcal M$ is an open set and each chart $φ_i: U_i \to \mathbb{R}^n$ is a homeomorphism. This means, that $φ_i$ is bijective – sometimes also called one-to-one and onto - and continuous, and its inverse $φ_i^{-1}$ is continuous as well. The inverse $φ_i^{-1}$ is called (local) parametrization. The resulting parameters $a=φ(p)$ of $p$ (with respect to the chart $φ$) are in the literature also called “(local) coordinates”. To distinguish the parameter $a$ from get_coordinates in a basis, we use the terminology parameter in this package.

    For an atlas $\mathcal A$ we further require that

    \[\displaystyle\bigcup_{i\in I} U_i = \mathcal M.\]

    We say that $φ_i$ is a chart about $p$, if $p\in U_i$. An atlas provides a connection between a manifold and the Euclidean space $\mathbb{R}^n$, since locally, a chart about $p$ can be used to identify its neighborhood (as long as you stay in $U_i$) with a subset of a Euclidean space. Most manifolds we consider are smooth, i.e. any change of charts $φ_i \circ φ_j^{-1}: \mathbb{R}^n\to\mathbb{R}^n$, where $i,j\in I$, is a smooth function. These changes of charts are also called transition maps.

    Most operations on manifolds in Manifolds.jl avoid operating in a chart through appropriate embeddings and formulas derived for particular manifolds, though atlases provide the most general way of working with manifolds. Compared to these approaches, using an atlas is often more technical and time-consuming. They are extensively used in metric-related functions on MetricManifolds.

    Atlases are represented by objects of subtypes of AbstractAtlas. There are no type restrictions for indices of charts in atlases.

    Operations using atlases and charts are available through the following functions:

    • get_chart_index can be used to select an appropriate chart for the neighborhood of a given point $p$. This function should work deterministically, i.e. for a fixed $p$ always return the same chart.
    • get_parameters converts a point to its parameters with respect to the chart in a chart.
    • get_point converts parameters (local coordinates) in a chart to the point that corresponds to them.
    • induced_basis returns a basis of a given vector space at a point induced by a chart $φ$.
    • transition_map converts coordinates of a point between two charts, e.g. computes $φ_i\circ φ_j^{-1}: \mathbb{R}^n\to\mathbb{R}^n$, $i,j\in I$.

    While an atlas could store charts as explicit functions, it is favourable, that the [get_parameters] actually implements a chart $φ$, get_point its inverse, the prametrization $φ^{-1}$.

    Manifolds.AbstractAtlasType
    AbstractAtlas{𝔽}

    An abstract class for atlases whith charts that have values in the vector space 𝔽ⁿ for some value of n. 𝔽 is a number system determined by an AbstractNumbers object.

    source
    Manifolds.InducedBasisType
    InducedBasis(vs::VectorSpaceType, A::AbstractAtlas, i)

    The basis induced by chart with index i from an AbstractAtlas A of vector space of type vs.

    For the vs a TangentSpace this works as follows:

    Let $n$ denote the dimension of the manifold $\mathcal M$.

    Let the parameter $a=φ_i(p) ∈ \mathbb R^n$ and $j∈\{1,…,n\}$. We can look at the $j$th parameter curve $b_j(t) = a + te_j$, where $e_j$ denotes the $j$th unit vector. Using the parametrisation we obtain a curve $c_j(t) = φ_i^{-1}(b_j(t))$ which fulfills $c(0) = p$.

    Now taking the derivative(s) with respect to $t$ (and evaluate at $t=0$), we obtain a tangent vector for each $j$ corresponding to an equivalence class of curves (having the same derivative) as

    \[X_j = [c_j] = \frac{\mathrm{d}}{\mathrm{d}t} c_i(t) \Bigl|_{t=0}\]

    and the set $\{X_1,\ldots,X_n\}$ is the chart-induced basis of $T_p\mathcal M$.

    See also

    VectorSpaceType, AbstractBasis

    source
    Manifolds.RetractionAtlasType
    RetractionAtlas{
    +    𝔽,
    +    TRetr<:AbstractRetractionMethod,
    +    TInvRetr<:AbstractInverseRetractionMethod,
    +    TBasis<:AbstractBasis,
    +} <: AbstractAtlas{𝔽}

    An atlas indexed by points on a manifold, $\mathcal M = I$ and parameters (local coordinates) are given in $T_p\mathcal M$. This means that a chart $φ_p = \mathrm{cord}\circ\mathrm{retr}_p^{-1}$ is only locally defined (around $p$), where $\mathrm{cord}$ is the decomposition of the tangent vector into coordinates with respect to the given basis of the tangent space, cf. get_coordinates. The parametrization is given by $φ_p^{-1}=\mathrm{retr}_p\circ\mathrm{vec}$, where $\mathrm{vec}$ turns the basis coordinates into a tangent vector, cf. get_vector.

    In short: The coordinates with respect to a basis are used together with a retraction as a parametrization.

    See also

    AbstractAtlas, AbstractInverseRetractionMethod, AbstractRetractionMethod, AbstractBasis

    source
    LinearAlgebra.normMethod
    norm(M::AbstractManifold, A::AbstractAtlas, i, a, Xc)

    Calculate norm on manifold M at point with parameters a in chart i of an AbstractAtlas A of vector with coefficients Xc in induced basis.

    source
    Manifolds.affine_connection!Method
    affine_connection!(M::AbstractManifold, Zc, A::AbstractAtlas, i, a, Xc, Yc)

    Calculate affine connection on manifold M at point with parameters a in chart i of an an AbstractAtlas A of vectors with coefficients Zc and Yc in induced basis and save the result in Zc.

    source
    Manifolds.affine_connectionMethod
    affine_connection(M::AbstractManifold, A::AbstractAtlas, i, a, Xc, Yc)

    Calculate affine connection on manifold M at point with parameters a in chart i of AbstractAtlas A of vectors with coefficients Xc and Yc in induced basis.

    source
    Manifolds.check_chart_switchMethod
    check_chart_switch(M::AbstractManifold, A::AbstractAtlas, i, a)

    Determine whether chart should be switched when an operation in chart i from an AbstractAtlas A reaches parameters a in that chart.

    By default false is returned.

    source
    Manifolds.get_chart_indexMethod
    get_chart_index(M::AbstractManifold, A::AbstractAtlas, i, a)

    Select a chart from an AbstractAtlas A for manifold M that is suitable for representing the neighborhood of point with parametrization a in chart i. This selection should be deterministic, although different charts may be selected for arbitrarily close but distinct points.

    See also

    get_default_atlas

    source
    Manifolds.get_chart_indexMethod
    get_chart_index(M::AbstractManifold, A::AbstractAtlas, p)

    Select a chart from an AbstractAtlas A for manifold M that is suitable for representing the neighborhood of point p. This selection should be deterministic, although different charts may be selected for arbitrarily close but distinct points.

    See also

    get_default_atlas

    source
    Manifolds.get_parametersMethod
    get_parameters(M::AbstractManifold, A::AbstractAtlas, i, p)

    Calculate parameters (local coordinates) of point p on manifold M in chart from an AbstractAtlas A at index i. This function is hence an implementation of the chart $φ_i(p), i\in I$. The parameters are in the number system determined by A. If the point $p\notin U_i$ is not in the domain of the chart, this method should throw an error.

    See also

    get_point, get_chart_index

    source
    Manifolds.get_pointMethod
    get_point(M::AbstractManifold, A::AbstractAtlas, i, a)

    Calculate point at parameters (local coordinates) a on manifold M in chart from an AbstractAtlas A at index i. This function is hence an implementation of the inverse $φ_i^{-1}(a), i\in I$ of a chart, also called a parametrization.

    See also

    get_parameters, get_chart_index

    source
    Manifolds.local_metricMethod
    local_metric(M::AbstractManifold, p, B::InducedBasis)

    Compute the local metric tensor for vectors expressed in terms of coordinates in basis B on manifold M. The point p is not checked.

    source
    Manifolds.transition_mapMethod
    transition_map(M::AbstractManifold, A_from::AbstractAtlas, i_from, A_to::AbstractAtlas, i_to, a)
    +transition_map(M::AbstractManifold, A::AbstractAtlas, i_from, i_to, a)

    Given coordinates a in chart (A_from, i_from) of a point on manifold M, returns coordinates of that point in chart (A_to, i_to). If A_from and A_to are equal, A_to can be omitted.

    Mathematically this function is the transition map or change of charts, but it might even be between two atlases $A_{\text{from}} = \{(U_i,φ_i)\}_{i\in I}$ and $A_{\text{to}} = \{(V_j,\psi_j)\}_{j\in J}$, and hence $I, J$ are their index sets. We have $i_{\text{from}}\in I$, $i_{\text{to}}\in J$.

    This method then computes

    \[\bigl(\psi_{i_{\text{to}}}\circ φ_{i_{\text{from}}}^{-1}\bigr)(a)\]

    Note that, similarly to get_parameters, this method should fail the same way if $V_{i_{\text{to}}}\cap U_{i_{\text{from}}}=\emptyset$.

    See also

    AbstractAtlas, get_parameters, get_point

    source
    Manifolds.transition_map_diffMethod
    transition_map_diff(M::AbstractManifold, A::AbstractAtlas, i_from, a, c, i_to)

    Compute differential of transition map from chart i_from to chart i_to from an AbstractAtlas A on manifold M at point with parameters a on tangent vector with coordinates c in the induced basis.

    source
    ManifoldsBase.innerMethod
    inner(M::AbstractManifold, A::AbstractAtlas, i, a, Xc, Yc)

    Calculate inner product on manifold M at point with parameters a in chart i of an atlas A of vectors with coefficients Xc and Yc in induced basis.

    source

    Cotangent space and musical isomorphisms

    Related to atlases, there is also support for the cotangent space and coefficients of cotangent vectors in bases of the cotangent space.

    Functions sharp and flat implement musical isomorphisms for arbitrary vector bundles.

    Manifolds.flatMethod
    flat(M::AbstractManifold, p, X)

    Compute the flat isomorphism (one of the musical isomorphisms) of tangent vector X from the vector space of type M at point p from the underlying AbstractManifold.

    The function can be used for example to transform vectors from the tangent bundle to vectors from the cotangent bundle $♭ : T\mathcal M → T^{*}\mathcal M$

    source
    Manifolds.sharpMethod
    sharp(M::AbstractManifold, p, ξ)

    Compute the sharp isomorphism (one of the musical isomorphisms) of vector ξ from the vector space M at point p from the underlying AbstractManifold.

    The function can be used for example to transform vectors from the cotangent bundle to vectors from the tangent bundle $♯ : T^{*}\mathcal M → T\mathcal M$

    source

    Computations in charts

    Manifolds.IntegratorTerminatorNearChartBoundaryType
    IntegratorTerminatorNearChartBoundary{TKwargs}

    An object for determining the point at which integration of a differential equation in a chart on a manifold should be terminated for the purpose of switching a chart.

    The value stored in check_chart_switch_kwargs will be passed as keyword arguments to check_chart_switch. By default an empty tuple is stored.

    source
    Manifolds.solve_chart_exp_odeFunction
    solve_chart_exp_ode(
    +    M::AbstractManifold,
    +    a,
    +    Xc,
    +    A::AbstractAtlas,
    +    i0;
    +    solver=AutoVern9(Rodas5()),
    +    final_time=1.0,
    +    check_chart_switch_kwargs=NamedTuple(),
    +    kwargs...,
    +)

    Solve geodesic ODE on a manifold M from point of coordinates a in chart i0 from an AbstractAtlas A in direction of coordinates Xc in the induced basis.

    source
    Manifolds.solve_chart_log_bvpFunction
    solve_chart_log_bvp(
    +    M::AbstractManifold,
    +    a1,
    +    a2,
    +    A::AbstractAtlas,
    +    i;
    +    solver=MIRK4(),
    +    dt=0.05,
    +    kwargs...,
    +)

    Solve the BVP corresponding to geodesic calculation on AbstractManifold M, between points with parameters a1 and a2 in a chart i of an AbstractAtlas A using solver solver. Geodesic γ is sampled at time interval dt, with γ(0) = a1 and γ(1) = a2.

    source
    Manifolds.solve_chart_parallel_transport_odeFunction
    solve_chart_parallel_transport_ode(
    +    M::AbstractManifold,
    +    a,
    +    Xc,
    +    A::AbstractAtlas,
    +    i0,
    +    Yc;
    +    solver=AutoVern9(Rodas5()),
    +    check_chart_switch_kwargs=NamedTuple(),
    +    final_time=1.0,
    +    kwargs...,
    +)

    Parallel transport vector with coordinates Yc along geodesic on a manifold M from point of coordinates a in a chart i0 from an AbstractAtlas A in direction of coordinates Xc in the induced basis.

    source
    diff --git a/v0.8.79/features/differentiation.html b/v0.8.79/features/differentiation.html new file mode 100644 index 0000000000..b4f7b0cf37 --- /dev/null +++ b/v0.8.79/features/differentiation.html @@ -0,0 +1,2 @@ + +Differentiation · Manifolds.jl
    diff --git a/v0.8.79/features/distributions.html b/v0.8.79/features/distributions.html new file mode 100644 index 0000000000..f8192c7a38 --- /dev/null +++ b/v0.8.79/features/distributions.html @@ -0,0 +1,2 @@ + +Distributions · Manifolds.jl

    Distributions

    The following functions and types provide support for manifold-valued and tangent space-valued distributions:

    Manifolds.FVectorDistributionType
    FVectorDistribution{TSpace<:VectorBundleFibers, T}

    An abstract distribution for vector bundle fiber-valued distributions (values from a fiber of a vector bundle at point x from the given manifold). For example used for tangent vector-valued distributions.

    source
    Manifolds.FVectorSupportType
    FVectorSupport(space::AbstractManifold, VectorBundleFibers)

    Value support for vector bundle fiber-valued distributions (values from a fiber of a vector bundle at a point from the given manifold). For example used for tangent vector-valued distributions.

    source
    Manifolds.FVectorvariateType
    FVectorvariate

    Structure that subtypes VariateForm, indicating that a single sample is a vector from a fiber of a vector bundle.

    source
    Manifolds.MPointvariateType
    MPointvariate

    Structure that subtypes VariateForm, indicating that a single sample is a point on a manifold.

    source
    Manifolds.ProjectedFVectorDistributionType
    ProjectedFVectorDistribution(type::VectorBundleFibers, p, d, project!)

    Generates a random vector from ambient space of manifold type.manifold at point p and projects it to vector space of type type using function project!, see project for documentation. Generated arrays are of type TResult.

    source
    Manifolds.ProjectedPointDistributionType
    ProjectedPointDistribution(M::AbstractManifold, d, proj!, p)

    Generates a random point in ambient space of M and projects it to M using function proj!. Generated arrays are of type TResult, which can be specified by providing the p argument.

    source
    Manifolds.projected_distributionFunction
    projected_distribution(M::AbstractManifold, d, [p=rand(d)])

    Wrap the standard distribution d into a manifold-valued distribution. Generated points will be of similar type to p. By default, the type is not changed.

    source
    diff --git a/v0.8.79/features/integration.html b/v0.8.79/features/integration.html new file mode 100644 index 0000000000..04eb10f548 --- /dev/null +++ b/v0.8.79/features/integration.html @@ -0,0 +1,2 @@ + +Integration · Manifolds.jl

    Integration

    Manifolds.manifold_volumeMethod
    manifold_volume(M::AbstractManifold)

    Volume of manifold M defined through integration of Riemannian volume element in a chart. Note that for many manifolds there is no universal agreement over the exact ranges over which the integration should happen. For details see [BST03].

    source
    Manifolds.volume_densityMethod
    volume_density(M::AbstractManifold, p, X)

    Volume density function of manifold M, i.e. determinant of the differential of exponential map exp(M, p, X). Determinant can be understood as computed in a basis, from the matrix of the linear operator said differential corresponds to. Details are available in Section 4.1 of [CLLD22].

    Note that volume density is well-defined only for X for which exp(M, p, X) is injective.

    source
    diff --git a/v0.8.79/features/statistics.html b/v0.8.79/features/statistics.html new file mode 100644 index 0000000000..31adda1ecf --- /dev/null +++ b/v0.8.79/features/statistics.html @@ -0,0 +1,169 @@ + +Statistics · Manifolds.jl

    Statistics

    Manifolds.GeodesicInterpolationType
    GeodesicInterpolation <: AbstractEstimationMethod

    Repeated weighted geodesic interpolation method for estimating the Riemannian center of mass.

    The algorithm proceeds with the following simple online update:

    \[\begin{aligned} +μ_1 &= x_1\\ +t_k &= \frac{w_k}{\sum_{i=1}^k w_i}\\ +μ_{k} &= γ_{μ_{k-1}}(x_k; t_k), +\end{aligned}\]

    where $x_k$ are points, $w_k$ are weights, $μ_k$ is the $k$th estimate of the mean, and $γ_x(y; t)$ is the point at time $t$ along the shortest_geodesic between points $x,y ∈ \mathcal M$. The algorithm terminates when all $x_k$ have been considered. In the Euclidean case, this exactly computes the weighted mean.

    The algorithm has been shown to converge asymptotically with the sample size for the following manifolds equipped with their default metrics when all sampled points are in an open geodesic ball about the mean with corresponding radius (see GeodesicInterpolationWithinRadius):

    For online variance computation, the algorithm additionally uses an analogous recursion to the weighted Welford algorithm [Wes79].

    source
    Manifolds.default_estimation_methodMethod
    default_estimation_method(M::AbstractManifold, f)

    Specify a default AbstractEstimationMethod for an AbstractManifold for a function f, e.g. the median or the mean.

    Note that his function is decorated, so it can inherit from the embedding, for example for the IsEmbeddedSubmanifold trait.

    source
    Statistics.covMethod
    Statistics.cov(
    +    M::AbstractManifold,
    +    x::AbstractVector;
    +    basis::AbstractBasis=DefaultOrthonormalBasis(),
    +    tangent_space_covariance_estimator::CovarianceEstimator=SimpleCovariance(;
    +        corrected=true,
    +    ),
    +    mean_estimation_method::AbstractEstimationMethod=GradientDescentEstimation(),
    +    inverse_retraction_method::AbstractInverseRetractionMethod=default_inverse_retraction_method(
    +        M, eltype(x),
    +    ),
    +)

    Estimate the covariance matrix of a set of points x on manifold M. Since the covariance matrix on a manifold is a rank 2 tensor, the function returns its coefficients in basis induced by the given tangent space basis. See Section 5 of [Pen06] for details.

    The mean is calculated using the specified mean_estimation_method using [mean](@ref Statistics.mean(::AbstractManifold, ::AbstractVector, ::AbstractEstimationMethod), and tangent vectors at this mean are calculated using the provided inverse_retraction_method. Finally, the covariance matrix in the tangent plane is estimated using the Euclidean space estimator tangent_space_covariance_estimator. The type CovarianceEstimator is defined in StatsBase.jl and examples of covariance estimation methods can be found in CovarianceEstimation.jl.

    source
    Statistics.mean!Method
    mean!(M::AbstractManifold, y, x::AbstractVector[, w::AbstractWeights]; kwargs...)
    +mean!(
    +    M::AbstractManifold,
    +    y,
    +    x::AbstractVector,
    +    [w::AbstractWeights,]
    +    method::AbstractEstimationMethod;
    +    kwargs...,
    +)

    Compute the mean in-place in y.

    source
    Statistics.meanMethod
    mean(
    +    M::AbstractManifold,
    +    x::AbstractVector,
    +    [w::AbstractWeights,]
    +    method::ExtrinsicEstimation;
    +    kwargs...,
    +)

    Estimate the Riemannian center of mass of x using ExtrinsicEstimation, i.e. by computing the mean in the embedding and projecting the result back. You can specify an extrinsic_method to specify which mean estimation method to use in the embedding, which defaults to GeodesicInterpolation.

    See mean for a description of the remaining kwargs.

    source
    Statistics.meanMethod
    mean(
    +    M::AbstractManifold,
    +    x::AbstractVector,
    +    [w::AbstractWeights,]
    +    method::GeodesicInterpolation;
    +    shuffle_rng=nothing,
    +    retraction::AbstractRetractionMethod = default_retraction_method(M, eltype(x)),
    +    inverse_retraction::AbstractInverseRetractionMethod = default_inverse_retraction_method(M, eltype(x)),
    +    kwargs...,
    +)

    Estimate the Riemannian center of mass of x in an online fashion using repeated weighted geodesic interpolation. See GeodesicInterpolation for details.

    If shuffle_rng is provided, it is used to shuffle the order in which the points are considered for computing the mean.

    Optionally, pass retraction and inverse_retraction method types to specify the (inverse) retraction.

    source
    Statistics.meanMethod
    mean(M::AbstractManifold, x::AbstractVector[, w::AbstractWeights]; kwargs...)

    Compute the (optionally weighted) Riemannian center of mass also known as Karcher mean of the vector x of points on the AbstractManifold M, defined as the point that satisfies the minimizer

    \[\argmin_{y ∈ \mathcal M} \frac{1}{2 \sum_{i=1}^n w_i} \sum_{i=1}^n w_i\mathrm{d}_{\mathcal M}^2(y,x_i),\]

    where $\mathrm{d}_{\mathcal M}$ denotes the Riemannian distance.

    In the general case, the GradientDescentEstimation is used to compute the mean. mean( M::AbstractManifold, x::AbstractVector, [w::AbstractWeights,] method::AbstractEstimationMethod=defaultestimationmethod(M); kwargs..., )

    Compute the mean using the specified method.

    mean(
    +    M::AbstractManifold,
    +    x::AbstractVector,
    +    [w::AbstractWeights,]
    +    method::GradientDescentEstimation;
    +    p0=x[1],
    +    stop_iter=100,
    +    retraction::AbstractRetractionMethod = default_retraction_method(M),
    +    inverse_retraction::AbstractInverseRetractionMethod = default_retraction_method(M, eltype(x)),
    +    kwargs...,
    +)

    Compute the mean using the gradient descent scheme GradientDescentEstimation.

    Optionally, provide p0, the starting point (by default set to the first data point). stop_iter denotes the maximal number of iterations to perform and the kwargs... are passed to isapprox to stop, when the minimal change between two iterates is small. For more stopping criteria check the Manopt.jl package and use a solver therefrom.

    Optionally, pass retraction and inverse_retraction method types to specify the (inverse) retraction.

    The Theory stems from [Kar77] and is also described in [PA12] as the exponential barycenter. The algorithm is further described in[ATV13].

    source
    Statistics.median!Method
    median!(M::AbstractManifold, y, x::AbstractVector[, w::AbstractWeights]; kwargs...)
    +median!(
    +    M::AbstractManifold,
    +    y,
    +    x::AbstractVector,
    +    [w::AbstractWeights,]
    +    method::AbstractEstimationMethod;
    +    kwargs...,
    +)

    computes the median in-place in y.

    source
    Statistics.medianMethod
    median(
    +    M::AbstractManifold,
    +    x::AbstractVector,
    +    [w::AbstractWeights,]
    +    method::CyclicProximalPointEstimation;
    +    p0=x[1],
    +    stop_iter=1000000,
    +    retraction::AbstractRetractionMethod = default_retraction_method(M, eltype(x),),
    +    inverse_retraction::AbstractInverseRetractionMethod = default_inverse_retraction_method(M, eltype(x),),
    +    kwargs...,
    +)

    Compute the median using CyclicProximalPointEstimation.

    Optionally, provide p0, the starting point (by default set to the first data point). stop_iter denotes the maximal number of iterations to perform and the kwargs... are passed to isapprox to stop, when the minimal change between two iterates is small. For more stopping criteria check the Manopt.jl package and use a solver therefrom.

    Optionally, pass retraction and inverse_retraction method types to specify the (inverse) retraction.

    The algorithm is further described in [Bac14].

    source
    Statistics.medianMethod
    median(
    +    M::AbstractManifold,
    +    x::AbstractVector,
    +    [w::AbstractWeights,]
    +    method::ExtrinsicEstimation;
    +    extrinsic_method = CyclicProximalPointEstimation(),
    +    kwargs...,
    +)

    Estimate the median of x using ExtrinsicEstimation, i.e. by computing the median in the embedding and projecting the result back. You can specify an extrinsic_method to specify which median estimation method to use in the embedding, which defaults to CyclicProximalPointEstimation.

    See median for a description of kwargs.

    source
    Statistics.medianMethod
    median(
    +    M::AbstractManifold,
    +    x::AbstractVector,
    +    [w::AbstractWeights,]
    +    method::WeiszfeldEstimation;
    +    α = 1.0,
    +    p0=x[1],
    +    stop_iter=2000,
    +    retraction::AbstractRetractionMethod = default_retraction_method(M, eltype(x)),
    +    inverse_retraction::AbstractInverseRetractionMethod = default_inverse_retraction_method(M, eltype(x)),
    +    kwargs...,
    +)

    Compute the median using WeiszfeldEstimation.

    Optionally, provide p0, the starting point (by default set to the first data point). stop_iter denotes the maximal number of iterations to perform and the kwargs... are passed to isapprox to stop, when the minimal change between two iterates is small. For more stopping criteria check the Manopt.jl package and use a solver therefrom.

    The parameter $α\in (0,2]$ is a step size.

    The algorithm is further described in [FVJ08], especially the update rule in Eq. (6), i.e. Let $q_{k}$ denote the current iterate, $n$ the number of points $x_1,\ldots,x_n$, and

    \[I_k = \bigl\{ i \in \{1,\ldots,n\} \big| x_i \neq q_k \bigr\}\]

    all indices of points that are not equal to the current iterate. Then the update reads $q_{k+1} = \exp_{q_k}(αX)$, where

    \[X = \frac{1}{s}\sum_{i\in I_k} \frac{w_i}{d_{\mathcal M}(q_k,x_i)}\log_{q_k}x_i +\quad +\text{ with } +\quad +s = \sum_{i\in I_k} \frac{w_i}{d_{\mathcal M}(q_k,x_i)},\]

    and where $\mathrm{d}_{\mathcal M}$ denotes the Riemannian distance.

    Optionally, pass retraction and inverse_retraction method types to specify the (inverse) retraction, which by default use the exponential and logarithmic map, respectively.

    source
    Statistics.medianMethod
    median(M::AbstractManifold, x::AbstractVector[, w::AbstractWeights]; kwargs...)
    +median(
    +    M::AbstractManifold,
    +    x::AbstractVector,
    +    [w::AbstractWeights,]
    +    method::AbstractEstimationMethod;
    +    kwargs...,
    +)

    Compute the (optionally weighted) Riemannian median of the vector x of points on the AbstractManifold M, defined as the point that satisfies the minimizer

    \[\argmin_{y ∈ \mathcal M} \frac{1}{\sum_{i=1}^n w_i} \sum_{i=1}^n w_i\mathrm{d}_{\mathcal M}(y,x_i),\]

    where $\mathrm{d}_{\mathcal M}$ denotes the Riemannian distance. This function is nonsmooth (i.e nondifferentiable).

    In the general case, the CyclicProximalPointEstimation is used to compute the median. However, this default may be overloaded for specific manifolds.

    Compute the median using the specified method.

    source
    Statistics.stdMethod
    std(M, x, m=mean(M, x); corrected=true, kwargs...)
    +std(M, x, w::AbstractWeights, m=mean(M, x, w); corrected=false, kwargs...)

    compute the optionally weighted standard deviation of a Vector x of n data points on the AbstractManifold M, i.e.

    \[\sqrt{\frac{1}{c} \sum_{i=1}^n w_i d_{\mathcal M}^2 (x_i,m)},\]

    where c is a correction term, see Statistics.std. The mean of x can be specified as m, and the corrected variance can be activated by setting corrected=true.

    source
    Statistics.varMethod
    var(M, x, m=mean(M, x); corrected=true)
    +var(M, x, w::AbstractWeights, m=mean(M, x, w); corrected=false)

    compute the (optionally weighted) variance of a Vector x of n data points on the AbstractManifold M, i.e.

    \[\frac{1}{c} \sum_{i=1}^n w_i d_{\mathcal M}^2 (x_i,m),\]

    where c is a correction term, see Statistics.var. The mean of x can be specified as m, and the corrected variance can be activated by setting corrected=true. All further kwargs... are passed to the computation of the mean (if that is not provided).

    source
    StatsBase.kurtosisMethod
    kurtosis(M::AbstractManifold, x::AbstractVector, k::Int[, w::AbstractWeights], m=mean(M, x[, w]))

    Compute the excess kurtosis of points in x on manifold M. Optionally provide weights w and/or a precomputed mean m.

    source
    StatsBase.mean_and_stdMethod
    mean_and_std(M::AbstractManifold, x::AbstractVector[, w::AbstractWeights]; kwargs...) -> (mean, std)

    Compute the mean and the standard deviation std simultaneously.

    mean_and_std(
    +    M::AbstractManifold,
    +    x::AbstractVector
    +    [w::AbstractWeights,]
    +    method::AbstractEstimationMethod;
    +    kwargs...,
    +) -> (mean, var)

    Use the method for simultaneously computing the mean and standard deviation. To use a mean-specific method, call mean and then std.

    source
    StatsBase.mean_and_varMethod
    mean_and_var(
    +    M::AbstractManifold,
    +    x::AbstractVector
    +    [w::AbstractWeights,]
    +    method::GeodesicInterpolationWithinRadius;
    +    kwargs...,
    +) -> (mean, var)

    Use repeated weighted geodesic interpolation to estimate the mean. Simultaneously, use a Welford-like recursion to estimate the variance.

    See GeodesicInterpolationWithinRadius and mean_and_var for more information.

    source
    StatsBase.mean_and_varMethod
    mean_and_var(
    +    M::AbstractManifold,
    +    x::AbstractVector
    +    [w::AbstractWeights,]
    +    method::GeodesicInterpolation;
    +    shuffle_rng::Union{AbstractRNG,Nothing} = nothing,
    +    retraction::AbstractRetractionMethod = default_retraction_method(M, eltype(x)),
    +    inverse_retraction::AbstractInverseRetractionMethod = default_inverse_retraction_method(M, eltype(x)),
    +    kwargs...,
    +) -> (mean, var)

    Use the repeated weighted geodesic interpolation to estimate the mean. Simultaneously, use a Welford-like recursion to estimate the variance.

    If shuffle_rng is provided, it is used to shuffle the order in which the points are considered. Optionally, pass retraction and inverse_retraction method types to specify the (inverse) retraction.

    See GeodesicInterpolation for details on the geodesic interpolation method.

    Note

    The Welford algorithm for the variance is experimental and is not guaranteed to give accurate results except on Euclidean.

    source
    StatsBase.mean_and_varMethod
    mean_and_var(M::AbstractManifold, x::AbstractVector[, w::AbstractWeights]; kwargs...) -> (mean, var)

    Compute the mean and the variance simultaneously. See those functions for a description of the arguments.

    mean_and_var(
    +    M::AbstractManifold,
    +    x::AbstractVector
    +    [w::AbstractWeights,]
    +    method::AbstractEstimationMethod;
    +    kwargs...,
    +) -> (mean, var)

    Use the method for simultaneously computing the mean and variance. To use a mean-specific method, call mean and then var.

    source
    StatsBase.momentFunction
    moment(M::AbstractManifold, x::AbstractVector, k::Int[, w::AbstractWeights], m=mean(M, x[, w]))

    Compute the kth central moment of points in x on manifold M. Optionally provide weights w and/or a precomputed mean.

    source
    StatsBase.skewnessMethod
    skewness(M::AbstractManifold, x::AbstractVector, k::Int[, w::AbstractWeights], m=mean(M, x[, w]))

    Compute the standardized skewness of points in x on manifold M. Optionally provide weights w and/or a precomputed mean m.

    source

    Literature

    [ATV13]
    +
    +
    B. Afsari, R. Tron and R. Vidal. On the Convergence of Gradient Descent for Finding the Riemannian Center of Mass. SIAM Journal on Control and Optimization 51, 2230–2260 (2013), arXiv:1201.0925.
    +
    [Bac14]
    +
    +
    M. Bačák. Computing medians and means in Hadamard spaces. SIAM Journal on Optimization 24, 1542–1566 (2014), arXiv:1210.2145, arXiv: [1210.2145](https://arxiv.org/abs/1210.2145).
    +
    [CV15]
    +
    +
    R. Chakraborty and B. C. Vemuri. Recursive Fréchet Mean Computation on the Grassmannian and Its Applications to Computer Vision. In: 2015 IEEE International Conference on Computer Vision (ICCV) (2015).
    +
    [CV19]
    +
    +
    R. Chakraborty and B. C. Vemuri. Statistics on the Stiefel manifold: Theory and applications. The Annals of Statistics 47 (2019), arXiv:1708.00045.
    +
    [CHSV16]
    +
    +
    G. Cheng, J. Ho, H. Salehian and B. C. Vemuri. Recursive Computation of the Fréchet Mean on Non-positively Curved Riemannian Manifolds with Applications. In: Riemannian Computing in Computer Vision, editors, 21–43. Springer, Cham (2016).
    +
    [FVJ08]
    +
    +
    P. T. Fletcher, S. Venkatasubramanian and S. Joshi. Robust statistics on Riemannian manifolds via the geometric median. In: 2008 IEEE Conference on Computer Vision and Pattern Recognition (2008).
    +
    [HCSV13]
    +
    +
    J. Ho, G. Cheng, H. Salehian and B. C. Vemuri. Recursive Karcher expectation estimators and geometric law of large numbers. In: 16th International Conference on Artificial Intelligence and Statistics (2013).
    +
    [Kar77]
    +
    +
    H. Karcher. Riemannian center of mass and mollifier smoothing. Communications on Pure and Applied Mathematics 30, 509–541 (1977).
    +
    [Pen06]
    +
    +
    X. Pennec. Intrinsic Statistics on Riemannian Manifolds: Basic Tools for Geometric Measurements. Journal of Mathematical Imaging and Vision 25, 127–154 (2006).
    +
    [PA12]
    +
    +
    X. Pennec and V. Arsigny. Exponential Barycenters of the Canonical Cartan Connection and Invariant Means on Lie Groups. In: Matrix Information Geometry, editors, 123–166. Springer, Berlin, Heidelberg (2012), arXiv:00699361.
    +
    [SCaO+15]
    +
    +
    H. Salehian, R. Chakraborty, E. and Ofori, D. Vaillancourt and B. C. Vemuri. An efficient recursive estimator of the Fréchet mean on hypersphere with applications to Medical Image Analysis. In: 5th MICCAI workshop on Mathematical Foundations of Computational Anatomy (2015).
    +
    [Wes79]
    +
    +
    D. H. West. Updating mean and variance estimates. Communications of the ACM 22, 532–535 (1979).
    +
    +
    diff --git a/v0.8.79/features/testing.html b/v0.8.79/features/testing.html new file mode 100644 index 0000000000..57b40e93ee --- /dev/null +++ b/v0.8.79/features/testing.html @@ -0,0 +1,31 @@ + +Testing · Manifolds.jl

    Testing

    Documentation for testing utilities for Manifolds.jl. The function test_manifold can be used to verify that your manifold correctly implements the Manifolds.jl interface. Similarly test_group and test_action can be used to verify implementation of groups and group actions.

    Manifolds.test_actionFunction
    test_action(
    +    A::AbstractGroupAction,
    +    a_pts::AbstractVector,
    +    m_pts::AbstractVector,
    +    X_pts = [];
    +    atol = 1e-10,
    +    atol_ident_compose = 0,
    +    test_optimal_alignment = false,
    +    test_mutating_group=true,
    +    test_mutating_action=true,
    +    test_diff = false,
    +    test_switch_direction = true,
    +)

    Tests general properties of the action A, given at least three different points that lie on it (contained in a_pts) and three different point that lie on the manifold it acts upon (contained in m_pts).

    Arguments

    • atol_ident_compose = 0: absolute tolerance for the test that composition with identity doesn't change the group element.
    source
    Manifolds.test_groupFunction
    test_group(
    +    G,
    +    g_pts::AbstractVector,
    +    X_pts::AbstractVector = [],
    +    Xe_pts::AbstractVector = [];
    +    atol = 1e-10,
    +    test_mutating = true,
    +    test_exp_lie_log = true,
    +    test_diff = false,
    +    test_invariance = false,
    +    test_lie_bracket=false,
    +    test_adjoint_action=false,
    +    diff_convs = [(), (LeftForwardAction(),), (RightBackwardAction(),)],
    +)

    Tests general properties of the group G, given at least three different points elements of it (contained in g_pts). Optionally, specify test_diff to test differentials of translation, using X_pts, which must contain at least one tangent vector at g_pts[1], and the direction conventions specified in diff_convs. Xe_pts should contain tangent vectors at identity for testing Lie algebra operations. If the group is equipped with an invariant metric, test_invariance indicates that the invariance should be checked for the provided points.

    source
    Manifolds.test_manifoldFunction
    test_manifold(
    +    M::AbstractManifold,
    +    pts::AbstractVector;
    +    args,
    +)

    Test general properties of manifold M, given at least three different points that lie on it (contained in pts).

    Arguments

    • basis_has_specialized_diagonalizing_get = false: if true, assumes that DiagonalizingOrthonormalBasis given in basis_types has get_coordinates and get_vector that work without caching.
    • basis_types_to_from = (): basis types that will be tested based on get_coordinates and get_vector.
    • basis_types_vecs = () : basis types that will be tested based on get_vectors
    • default_inverse_retraction_method = ManifoldsBase.LogarithmicInverseRetraction(): default method for inverse retractions (log.
    • default_retraction_method = ManifoldsBase.ExponentialRetraction(): default method for retractions (exp).
    • exp_log_atol_multiplier = 0: change absolute tolerance of exp/log tests (0 use default, i.e. deactivate atol and use rtol).
    • exp_log_rtol_multiplier = 1: change the relative tolerance of exp/log tests (1 use default). This is deactivated if the exp_log_atol_multiplier is nonzero.
    • expected_dimension_type = Integer: expected type of value returned by manifold_dimension.
    • inverse_retraction_methods = []: inverse retraction methods that will be tested.
    • is_mutating = true: whether mutating variants of functions should be tested.
    • is_point_atol_multiplier = 0: determines atol of is_point checks.
    • is_tangent_atol_multiplier = 0: determines atol of is_vector checks.
    • mid_point12 = test_exp_log ? shortest_geodesic(M, pts[1], pts[2], 0.5) : nothing: if not nothing, then check that mid_point(M, pts[1], pts[2]) is approximately equal to mid_point12. This is by default set to nothing if text_exp_log is set to false.
    • point_distributions = [] : point distributions to test.
    • rand_tvector_atol_multiplier = 0 : chage absolute tolerance in testing random vectors (0 use default, i.e. deactivate atol and use rtol) random tangent vectors are tangent vectors.
    • retraction_atol_multiplier = 0: change absolute tolerance of (inverse) retraction tests (0 use default, i.e. deactivate atol and use rtol).
    • retraction_rtol_multiplier = 1: change the relative tolerance of (inverse) retraction tests (1 use default). This is deactivated if the exp_log_atol_multiplier is nonzero.
    • retraction_methods = []: retraction methods that will be tested.
    • test_atlases = []: Vector or tuple of atlases that should be tested.
    • test_exp_log = true: if true, check that exp is the inverse of log.
    • test_injectivity_radius = true: whether implementation of injectivity_radius should be tested.
    • test_inplace = false : if true check if inplace variants work if they are activated, e.g. check that exp!(M, p, p, X) work if test_exp_log = true. This in general requires is_mutating to be true.
    • test_is_tangent: if true check that the default_inverse_retraction_method actually returns valid tangent vectors.
    • test_musical_isomorphisms = false : test musical isomorphisms.
    • test_mutating_rand = false : test the mutating random function for points on manifolds.
    • test_project_point = false: test projections onto the manifold.
    • test_project_tangent = false : test projections on tangent spaces.
    • test_representation_size = true : test repersentation size of points/tvectprs.
    • test_tangent_vector_broadcasting = true : test boradcasting operators on TangentSpace.
    • test_vector_spaces = true : test Vector bundle of this manifold.
    • test_default_vector_transport = false : test the default vector transport (usually parallel transport).
    • test_vee_hat = false: test vee and hat functions.
    • tvector_distributions = [] : tangent vector distributions to test.
    • vector_transport_methods = []: vector transport methods that should be tested.
    • vector_transport_inverse_retractions = [default_inverse_retraction_method for _ in 1:length(vector_transport_methods)]` inverse retractions to use with the vector transport method (especially the differentiated ones)
    • vector_transport_to = [ true for _ in 1:length(vector_transport_methods)]: whether to check the to variant of vector transport
    • vector_transport_direction = [ true for _ in 1:length(vector_transport_methods)]: whether to check the direction variant of vector transport
    source
    Manifolds.find_epsFunction
    find_eps(x...)

    Find an appropriate tolerance for given points or tangent vectors, or their types.

    source
    Manifolds.test_parallel_transportFunction
    test_parallel_transport(M,P; along=false, to=true, diretion=true)

    Generic tests for parallel transport on Mgiven at least two pointsin P.

    The single functions to transport along (a curve), to (a point) or (towards a) direction are sub-tests that can be activated by the keywords arguemnts

    !!! Note Since the interface to specify curves is not yet provided, the along keyword does not have an effect yet

    source
    diff --git a/v0.8.79/features/utilities.html b/v0.8.79/features/utilities.html new file mode 100644 index 0000000000..0e782c7894 --- /dev/null +++ b/v0.8.79/features/utilities.html @@ -0,0 +1,8 @@ + +Utilities · Manifolds.jl

    Ease of notation

    The following terms introduce a nicer notation for some operations, for example using the ∈ operator, $p ∈ \mathcal M$, to determine whether $p$ is a point on the AbstractManifold $\mathcal M$.

    Base.inFunction
    Base.in(p, M::AbstractManifold; kwargs...)
    +p ∈ M

    Check, whether a point p is a valid point (i.e. in) a AbstractManifold M. This method employs is_point deactivating the error throwing option.

    source
    Base.in(p, TpM::TangentSpaceAtPoint; kwargs...)
    +X ∈ TangentSpaceAtPoint(M,p)

    Check whether X is a tangent vector from (in) the tangent space $T_p\mathcal M$, i.e. the TangentSpaceAtPoint at p on the AbstractManifold M. This method uses is_vector deactivating the error throw option.

    source

    Fallback for the exponential map: Solving the corresponding ODE

    When additionally loading NLSolve.jl the following fallback for the exponential map is available.

    Public documentation

    The following functions are of interest for extending and using the ProductManifold.

    Manifolds.submanifold_componentFunction
    submanifold_component(M::AbstractManifold, p, i::Integer)
    +submanifold_component(M::AbstractManifold, p, ::Val(i)) where {i}
    +submanifold_component(p, i::Integer)
    +submanifold_component(p, ::Val(i)) where {i}

    Project the product array p on M to its ith component. A new array is returned.

    source
    Manifolds.submanifold_componentsFunction
    submanifold_components(M::AbstractManifold, p)
    +submanifold_components(p)

    Get the projected components of p on the submanifolds of M. The components are returned in a Tuple.

    source
    Manifolds.ProductReprType
    ProductRepr(parts)

    A more general but slower representation of points and tangent vectors on a product manifold.

    Example:

    A product point on a product manifold Sphere(2) × Euclidean(2) might be created as

    ProductRepr([1.0, 0.0, 0.0], [2.0, 3.0])

    where [1.0, 0.0, 0.0] is the part corresponding to the sphere factor and [2.0, 3.0] is the part corresponding to the euclidean manifold.

    Warning

    ProductRepr is deprecated and will be removed in a future release. Please use ArrayPartition instead.

    source

    Specific exception types

    For some manifolds it is useful to keep an extra index, at which point on the manifold, the error occurred as well as to collect all errors that occurred on a manifold. This page contains the manifold-specific error messages this package introduces.

    diff --git a/v0.8.79/index.html b/v0.8.79/index.html new file mode 100644 index 0000000000..fab52088ba --- /dev/null +++ b/v0.8.79/index.html @@ -0,0 +1,22 @@ + +Home · Manifolds.jl

    Manifolds

    Manifolds.ManifoldsModule

    Manifolds.jl provides a library of manifolds aiming for an easy-to-use and fast implementation.

    source

    The implemented manifolds are accompanied by their mathematical formulae.

    The manifolds are implemented using the interface for manifolds given in ManifoldsBase.jl. You can use that interface to implement your own software on manifolds, such that all manifolds based on that interface can be used within your code.

    For more information, see the About section.

    Getting started

    To install the package just type

    using Pkg; Pkg.add("Manifolds")

    Then you can directly start, for example to stop half way from the north pole on the Sphere to a point on the the equator, you can generate the shortest_geodesic. It internally employs log and exp.

    using Manifolds
    +M = Sphere(2)
    +γ = shortest_geodesic(M, [0., 0., 1.], [0., 1., 0.])
    +γ(0.5)
    3-element Vector{Float64}:
    + 0.0
    + 0.7071067811865475
    + 0.7071067811865476

    Citation

    If you use Manifolds.jl in your work, please cite the following

    @online{2106.08777,
    +    Author = {Seth D. Axen and Mateusz Baran and Ronny Bergmann and Krzysztof Rzecki},
    +    Title = {Manifolds.jl: An Extensible Julia Framework for Data Analysis on Manifolds},
    +    Year = {2021},
    +    Eprint = {2106.08777},
    +    Eprinttype = {arXiv},
    +}

    To refer to a certain version we recommend to also cite for example

    @software{manifoldsjl-zenodo-mostrecent,
    +  Author = {Seth D. Axen and Mateusz Baran and Ronny Bergmann},
    +  Title = {Manifolds.jl},
    +  Doi = {10.5281/ZENODO.4292129},
    +  Url = {https://zenodo.org/record/4292129},
    +  Publisher = {Zenodo},
    +  Year = {2021},
    +  Copyright = {MIT License}
    +}

    for the most recent version or a corresponding version specific DOI, see the list of all versions. Note that both citations are in BibLaTeX format.

    diff --git a/v0.8.79/manifolds/centeredmatrices.html b/v0.8.79/manifolds/centeredmatrices.html new file mode 100644 index 0000000000..0331ac160e --- /dev/null +++ b/v0.8.79/manifolds/centeredmatrices.html @@ -0,0 +1,11 @@ + +Centered matrices · Manifolds.jl

    Centered matrices

    Manifolds.CenteredMatricesType
    CenteredMatrices{m,n,𝔽} <: AbstractDecoratorManifold{𝔽}

    The manifold of $m × n$ real-valued or complex-valued matrices whose columns sum to zero, i.e.

    \[\bigl\{ p ∈ 𝔽^{m × n}\ \big|\ [1 … 1] * p = [0 … 0] \bigr\},\]

    where $𝔽 ∈ \{ℝ,ℂ\}$.

    Constructor

    CenteredMatrices(m, n[, field=ℝ])

    Generate the manifold of m-by-n (field-valued) matrices whose columns sum to zero.

    source
    ManifoldsBase.WeingartenMethod
    Y = Weingarten(M::CenteredMatrices, p, X, V)
    +Weingarten!(M::CenteredMatrices, Y, p, X, V)

    Compute the Weingarten map $\mathcal W_p$ at p on the CenteredMatrices M with respect to the tangent vector $X \in T_p\mathcal M$ and the normal vector $V \in N_p\mathcal M$.

    Since this a flat space by itself, the result is always the zero tangent vector.

    source
    ManifoldsBase.check_pointMethod
    check_point(M::CenteredMatrices{m,n,𝔽}, p; kwargs...)

    Check whether the matrix is a valid point on the CenteredMatrices M, i.e. is an m-by-n matrix whose columns sum to zero.

    The tolerance for the column sums of p can be set using kwargs....

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::CenteredMatrices{m,n,𝔽}, p, X; kwargs... )

    Check whether X is a tangent vector to manifold point p on the CenteredMatrices M, i.e. that X is a matrix of size (m, n) whose columns sum to zero and its values are from the correct AbstractNumbers. The tolerance for the column sums of p and X can be set using kwargs....

    source
    ManifoldsBase.projectMethod
    project(M::CenteredMatrices, p, X)

    Project the matrix X onto the tangent space at p on the CenteredMatrices M, i.e.

    \[\operatorname{proj}_p(X) = X - \begin{bmatrix} +1\\ +⋮\\ +1 +\end{bmatrix} * [c_1 \dots c_n],\]

    where $c_i = \frac{1}{m}\sum_{j=1}^m x_{j,i}$ for $i = 1, \dots, n$.

    source
    ManifoldsBase.projectMethod
    project(M::CenteredMatrices, p)

    Projects p from the embedding onto the CenteredMatrices M, i.e.

    \[\operatorname{proj}_{\mathcal M}(p) = p - \begin{bmatrix} +1\\ +⋮\\ +1 +\end{bmatrix} * [c_1 \dots c_n],\]

    where $c_i = \frac{1}{m}\sum_{j=1}^m p_{j,i}$ for $i = 1, \dots, n$.

    source
    diff --git a/v0.8.79/manifolds/choleskyspace.html b/v0.8.79/manifolds/choleskyspace.html new file mode 100644 index 0000000000..2fbc231915 --- /dev/null +++ b/v0.8.79/manifolds/choleskyspace.html @@ -0,0 +1,6 @@ + +Cholesky space · Manifolds.jl

    Cholesky space

    The Cholesky space is a Riemannian manifold on the lower triangular matrices. Its metric is based on the cholesky decomposition. The CholeskySpace is used to define the LogCholeskyMetric on the manifold of SymmetricPositiveDefinite matrices.

    Manifolds.CholeskySpaceType
    CholeskySpace{N} <: AbstractManifold{ℝ}

    The manifold of lower triangular matrices with positive diagonal and a metric based on the cholesky decomposition. The formulae for this manifold are for example summarized in Table 1 of [Lin19].

    Constructor

    CholeskySpace(n)

    Generate the manifold of $n× n$ lower triangular matrices with positive diagonal.

    source
    Base.expMethod
    exp(M::CholeskySpace, p, X)

    Compute the exponential map on the CholeskySpace M emanating from the lower triangular matrix with positive diagonal p towards the lower triangular matrix X The formula reads

    \[\exp_p X = ⌊ p ⌋ + ⌊ X ⌋ + \operatorname{diag}(p) +\operatorname{diag}(p)\exp\bigl( \operatorname{diag}(X)\operatorname{diag}(p)^{-1}\bigr),\]

    where $⌊\cdot⌋$ denotes the strictly lower triangular matrix, and $\operatorname{diag}$ extracts the diagonal matrix.

    source
    Base.logMethod
    log(M::CholeskySpace, X, p, q)

    Compute the logarithmic map on the CholeskySpace M for the geodesic emanating from the lower triangular matrix with positive diagonal p towards q. The formula reads

    \[\log_p q = ⌊ p ⌋ - ⌊ q ⌋ + \operatorname{diag}(p)\log\bigl(\operatorname{diag}(q)\operatorname{diag}(p)^{-1}\bigr),\]

    where $⌊\cdot⌋$ denotes the strictly lower triangular matrix, and $\operatorname{diag}$ extracts the diagonal matrix.

    source
    ManifoldsBase.check_pointMethod
    check_point(M::CholeskySpace, p; kwargs...)

    Check whether the matrix p lies on the CholeskySpace M, i.e. it's size fits the manifold, it is a lower triangular matrix and has positive entries on the diagonal. The tolerance for the tests can be set using the kwargs....

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::CholeskySpace, p, X; kwargs... )

    Check whether v is a tangent vector to p on the CholeskySpace M, i.e. after check_point(M,p), X has to have the same dimension as p and a symmetric matrix. The tolerance for the tests can be set using the kwargs....

    source
    ManifoldsBase.distanceMethod
    distance(M::CholeskySpace, p, q)

    Compute the Riemannian distance on the CholeskySpace M between two matrices p, q that are lower triangular with positive diagonal. The formula reads

    \[d_{\mathcal M}(p,q) = \sqrt{\sum_{i>j} (p_{ij}-q_{ij})^2 + +\sum_{j=1}^m (\log p_{jj} - \log q_{jj})^2 +}\]

    source
    ManifoldsBase.innerMethod
    inner(M::CholeskySpace, p, X, Y)

    Compute the inner product on the CholeskySpace M at the lower triangular matric with positive diagonal p and the two tangent vectors X,Y, i.e they are both lower triangular matrices with arbitrary diagonal. The formula reads

    \[g_p(X,Y) = \sum_{i>j} X_{ij}Y_{ij} + \sum_{j=1}^m X_{ii}Y_{ii}p_{ii}^{-2}\]

    source
    ManifoldsBase.parallel_transport_toMethod
    parallel_transport_to(M::CholeskySpace, p, X, q)

    Parallely transport the tangent vector X at p along the geodesic to q on the CholeskySpace manifold M. The formula reads

    \[\mathcal P_{q←p}(X) = ⌊ X ⌋ ++ \operatorname{diag}(q)\operatorname{diag}(p)^{-1}\operatorname{diag}(X),\]

    where $⌊\cdot⌋$ denotes the strictly lower triangular matrix, and $\operatorname{diag}$ extracts the diagonal matrix.

    source

    Literature

    diff --git a/v0.8.79/manifolds/circle.html b/v0.8.79/manifolds/circle.html new file mode 100644 index 0000000000..38e161dbfc --- /dev/null +++ b/v0.8.79/manifolds/circle.html @@ -0,0 +1,3 @@ + +Circle · Manifolds.jl

    Circle

    Manifolds.CircleType
    Circle{𝔽} <: AbstractManifold{𝔽}

    The circle $𝕊^1$ is a manifold here represented by real-valued points in $[-π,π)$ or complex-valued points $z ∈ ℂ$ of absolute value $\lvert z\rvert = 1$.

    Constructor

    Circle(𝔽=ℝ)

    Generate the -valued Circle represented by angles, which alternatively can be set to use the AbstractNumbers 𝔽=ℂ to obtain the circle represented by -valued circle of unit numbers.

    source
    Base.expMethod
    exp(M::Circle, p, X)

    Compute the exponential map on the Circle.

    \[\exp_p X = (p+X)_{2π},\]

    where $(\cdot)_{2π}$ is the (symmetric) remainder with respect to division by $2π$, i.e. in $[-π,π)$.

    For the complex-valued case, the same formula as for the Sphere $𝕊^1$ is applied to values in the complex plane.

    source
    Base.logMethod
    log(M::Circle, p, q)

    Compute the logarithmic map on the Circle M.

    \[\log_p q = (q-p)_{2π},\]

    where $(\cdot)_{2π}$ is the (symmetric) remainder with respect to division by $2π$, i.e. in $[-π,π)$.

    For the complex-valued case, the same formula as for the Sphere $𝕊^1$ is applied to values in the complex plane.

    source
    Base.randMethod
    Random.rand(M::Circle{ℝ}; vector_at = nothing, σ::Real=1.0)

    If vector_at is nothing, return a random point on the Circle $\mathbb S^1$ by picking a random element from $[-\pi,\pi)$ uniformly.

    If vector_at is not nothing, return a random tangent vector from the tangent space of the point vector_at on the Circle by using a normal distribution with mean 0 and standard deviation σ.

    source
    Manifolds.sym_remMethod
    sym_rem(x,[T=π])

    Compute symmetric remainder of x with respect to the interall 2*T, i.e. (x+T)%2T, where the default for T is $π$

    source
    ManifoldsBase.check_pointMethod
    check_point(M::Circle, p)

    Check whether p is a point on the Circle M. For the real-valued case, p is an angle and hence it checks that $p ∈ [-π,π)$. for the complex-valued case, it is a unit number, $p ∈ ℂ$ with $\lvert p \rvert = 1$.

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::Circle, p, X; kwargs...)

    Check whether X is a tangent vector in the tangent space of p on the Circle M. For the real-valued case represented by angles, all X are valid, since the tangent space is the whole real line. For the complex-valued case X has to lie on the line parallel to the tangent line at p in the complex plane, i.e. their inner product has to be zero.

    source
    ManifoldsBase.distanceMethod
    distance(M::Circle, p, q)

    Compute the distance on the Circle M, which is the absolute value of the symmetric remainder of p and q for the real-valued case and the angle between both complex numbers in the Gaussian plane for the complex-valued case.

    source
    ManifoldsBase.innerMethod
    inner(M::Circle, p, X, Y)

    Compute the inner product of the two tangent vectors X,Y from the tangent plane at p on the Circle M using the restriction of the metric from the embedding, i.e.

    \[g_p(X,Y) = X*Y\]

    for the real case and

    \[g_p(X,Y) = Y^\mathrm{T}X\]

    for the complex case interpreting complex numbers in the Gaussian plane.

    source
    ManifoldsBase.parallel_transport_toMethod
     parallel_transport_to(M::Circle, p, X, q)

    Compute the parallel transport of X from the tangent space at p to the tangent space at q on the Circle M. For the real-valued case this results in the identity. For the complex-valud case, the formula is the same as for the Sphere(1) in the complex plane.

    \[\mathcal P_{q←p} X = X - \frac{⟨\log_p q,X⟩_p}{d^2_{ℂ}(p,q)} +\bigl(\log_p q + \log_q p \bigr),\]

    where log denotes the logarithmic map on M.

    source
    ManifoldsBase.projectMethod
    project(M::Circle, p, X)

    Project a value X onto the tangent space of the point p on the Circle M.

    For the real-valued case this is just the identity. For the complex valued case X is projected onto the line in the complex plane that is parallel to the tangent to p on the unit circle and contains 0.

    source
    ManifoldsBase.projectMethod
    project(M::Circle, p)

    Project a point p onto the Circle M. For the real-valued case this is the remainder with respect to modulus $2π$. For the complex-valued case the result is the projection of p onto the unit circle in the complex plane.

    source
    Statistics.meanMethod
    mean(M::Circle{ℂ}, x::AbstractVector[, w::AbstractWeights])

    Compute the Riemannian mean of x of points on the Circle $𝕊^1$, reprsented by complex numbers, i.e. embedded in the complex plane. Comuting the sum

    \[s = \sum_{i=1}^n x_i\]

    the mean is the angle of the complex number $s$, so represented in the complex plane as $\frac{s}{\lvert s \rvert}$, whenever $s \neq 0$.

    If the sum $s=0$, the mean is not unique. For example for opposite points or equally spaced angles.

    source
    Statistics.meanMethod
    mean(M::Circle{ℝ}, x::AbstractVector[, w::AbstractWeights])

    Compute the Riemannian mean of x of points on the Circle $𝕊^1$, reprsented by real numbers, i.e. the angular mean

    \[\operatorname{atan}\Bigl( \sum_{i=1}^n w_i\sin(x_i), \sum_{i=1}^n w_i\sin(x_i) \Bigr).\]

    source
    diff --git a/v0.8.79/manifolds/connection.html b/v0.8.79/manifolds/connection.html new file mode 100644 index 0000000000..03c430e431 --- /dev/null +++ b/v0.8.79/manifolds/connection.html @@ -0,0 +1,26 @@ + +Connection manifold · Manifolds.jl

    Connection manifold

    A connection manifold always consists of a topological manifold together with a connection $\Gamma$.

    However, often there is an implicitly assumed (default) connection, like the LeviCivitaConnection connection on a Riemannian manifold. It is not necessary to use this decorator if you implement just one (or the first) connection. If you later introduce a second, the old (first) connection can be used without an explicitly stated connection.

    This manifold decorator serves two purposes:

    1. to implement different connections (e.g. in closed form) for one AbstractManifold
    2. to provide a way to compute geodesics on manifolds, where this AbstractAffineConnection does not yield a closed formula.

    An example of usage can be found in Cartan-Schouten connections, see AbstractCartanSchoutenConnection.

    Types

    Manifolds.IsConnectionManifoldType
    IsConnectionManifold <: AbstractTrait

    Specify that a certain decorated Manifold is a connection manifold in the sence that it provides explicit connection properties, extending/changing the default connection properties of a manifold.

    source

    Functions

    Base.expMethod
    exp(::TraitList{IsConnectionManifold}, M::AbstractDecoratorManifold, p, X)

    Compute the exponential map on a manifold that IsConnectionManifold M equipped with corresponding affine connection.

    If M is a MetricManifold with a IsDefaultMetric trait, this method falls back to exp(M, p, X).

    Otherwise it numerically integrates the underlying ODE, see solve_exp_ode. Currently, the numerical integration is only accurate when using a single coordinate chart that covers the entire manifold. This excludes coordinates in an embedded space.

    source
    Manifolds.christoffel_symbols_firstMethod
    christoffel_symbols_first(
    +    M::AbstractManifold,
    +    p,
    +    B::AbstractBasis;
    +    backend::AbstractDiffBackend = default_differential_backend(),
    +)

    Compute the Christoffel symbols of the first kind in local coordinates of basis B. The Christoffel symbols are (in Einstein summation convention)

    \[Γ_{ijk} = \frac{1}{2} \Bigl[g_{kj,i} + g_{ik,j} - g_{ij,k}\Bigr],\]

    where $g_{ij,k}=\frac{∂}{∂ p^k} g_{ij}$ is the coordinate derivative of the local representation of the metric tensor. The dimensions of the resulting multi-dimensional array are ordered $(i,j,k)$.

    source
    Manifolds.christoffel_symbols_secondMethod
    christoffel_symbols_second(
    +    M::AbstractManifold,
    +    p,
    +    B::AbstractBasis;
    +    backend::AbstractDiffBackend = default_differential_backend(),
    +)

    Compute the Christoffel symbols of the second kind in local coordinates of basis B. For affine connection manifold the Christoffel symbols need to be explicitly implemented while, for a MetricManifold they are computed as (in Einstein summation convention)

    \[Γ^{l}_{ij} = g^{kl} Γ_{ijk},\]

    where $Γ_{ijk}$ are the Christoffel symbols of the first kind (see christoffel_symbols_first), and $g^{kl}$ is the inverse of the local representation of the metric tensor. The dimensions of the resulting multi-dimensional array are ordered $(l,i,j)$.

    source
    Manifolds.christoffel_symbols_second_jacobianMethod
    christoffel_symbols_second_jacobian(
    +    M::AbstractManifold,
    +    p,
    +    B::AbstractBasis;
    +    backend::AbstractDiffBackend = default_differential_backend(),
    +)

    Get partial derivatives of the Christoffel symbols of the second kind for manifold M at p with respect to the coordinates of B, i.e.

    \[\frac{∂}{∂ p^l} Γ^{k}_{ij} = Γ^{k}_{ij,l}.\]

    The dimensions of the resulting multi-dimensional array are ordered $(i,j,k,l)$.

    source
    Manifolds.gaussian_curvatureMethod
    gaussian_curvature(M::AbstractManifold, p, B::AbstractBasis; backend::AbstractDiffBackend = default_differential_backend())

    Compute the Gaussian curvature of the manifold M at the point p using basis B. This is equal to half of the scalar Ricci curvature, see ricci_curvature.

    source
    Manifolds.solve_exp_odeMethod
    solve_exp_ode(
    +    M::AbstractConnectionManifold,
    +    p,
    +    X,
    +    t::Number,
    +    B::AbstractBasis;
    +    backend::AbstractDiffBackend = default_differential_backend(),
    +    solver = AutoVern9(Rodas5()),
    +    kwargs...,
    +)

    Approximate the exponential map on the manifold by evaluating the ODE descripting the geodesic at 1, assuming the default connection of the given manifold by solving the ordinary differential equation

    \[\frac{d^2}{dt^2} p^k + Γ^k_{ij} \frac{d}{dt} p_i \frac{d}{dt} p_j = 0,\]

    where $Γ^k_{ij}$ are the Christoffel symbols of the second kind, and the Einstein summation convention is assumed. The argument solver follows the OrdinaryDiffEq conventions. kwargs... specify keyword arguments that will be passed to OrdinaryDiffEq.solve.

    Currently, the numerical integration is only accurate when using a single coordinate chart that covers the entire manifold. This excludes coordinates in an embedded space.

    Note

    This function only works when OrdinaryDiffEq.jl is loaded with

    using OrdinaryDiffEq
    source
    ManifoldsBase.riemann_tensorMethod
    riemann_tensor(M::AbstractManifold, p, B::AbstractBasis; backend::AbstractDiffBackend=default_differential_backend())

    Compute the Riemann tensor $R^l_{ijk}$, also known as the Riemann curvature tensor, at the point p in local coordinates defined by B. The dimensions of the resulting multi-dimensional array are ordered $(l,i,j,k)$.

    The function uses the coordinate expression involving the second Christoffel symbol, see https://en.wikipedia.org/wiki/Riemann_curvature_tensor#Coordinate_expression for details.

    See also

    christoffel_symbols_second, christoffel_symbols_second_jacobian

    source

    Charts and bases of vector spaces

    All connection-related functions take a basis of a vector space as one of the arguments. This is needed because generally there is no way to define these functions without referencing a basis. In some cases there is no need to be explicit about this basis, and then for example a DefaultOrthonormalBasis object can be used. In cases where being explicit about these bases is needed, for example when using multiple charts, a basis can be specified, for example using induced_basis.

    diff --git a/v0.8.79/manifolds/elliptope.html b/v0.8.79/manifolds/elliptope.html new file mode 100644 index 0000000000..64be7a7992 --- /dev/null +++ b/v0.8.79/manifolds/elliptope.html @@ -0,0 +1,10 @@ + +Elliptope · Manifolds.jl

    Elliptope

    Manifolds.ElliptopeType
    Elliptope{N,K} <: AbstractDecoratorManifold{ℝ}

    The Elliptope manifold, also known as the set of correlation matrices, consists of all symmetric positive semidefinite matrices of rank $k$ with unit diagonal, i.e.,

    \[\begin{aligned} +\mathcal E(n,k) = +\bigl\{p ∈ ℝ^{n × n}\ \big|\ &a^\mathrm{T}pa \geq 0 \text{ for all } a ∈ ℝ^{n},\\ +&p_{ii} = 1 \text{ for all } i=1,\ldots,n,\\ +&\text{and } p = qq^{\mathrm{T}} \text{ for } q \in ℝ^{n × k} \text{ with } \operatorname{rank}(p) = \operatorname{rank}(q) = k +\bigr\}. +\end{aligned}\]

    And this manifold is working solely on the matrices $q$. Note that this $q$ is not unique, indeed for any orthogonal matrix $A$ we have $(qA)(qA)^{\mathrm{T}} = qq^{\mathrm{T}} = p$, so the manifold implemented here is the quotient manifold. The unit diagonal translates to unit norm columns of $q$.

    The tangent space at $p$, denoted $T_p\mathcal E(n,k)$, is also represented by matrices $Y\in ℝ^{n × k}$ and reads as

    \[T_p\mathcal E(n,k) = \bigl\{ +X ∈ ℝ^{n × n}\,|\,X = qY^{\mathrm{T}} + Yq^{\mathrm{T}} \text{ with } X_{ii} = 0 \text{ for } i=1,\ldots,n +\bigr\}\]

    endowed with the Euclidean metric from the embedding, i.e. from the $ℝ^{n × k}$

    This manifold was for example investigated in[JBAS10].

    Constructor

    Elliptope(n,k)

    generates the manifold $\mathcal E(n,k) \subset ℝ^{n × n}$.

    source
    ManifoldsBase.check_pointMethod
    check_point(M::Elliptope, q; kwargs...)

    checks, whether q is a valid reprsentation of a point $p=qq^{\mathrm{T}}$ on the Elliptope M, i.e. is a matrix of size (N,K), such that $p$ is symmetric positive semidefinite and has unit trace. Since by construction $p$ is symmetric, this is not explicitly checked. Since $p$ is by construction positive semidefinite, this is not checked. The tolerances for positive semidefiniteness and unit trace can be set using the kwargs....

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::Elliptope, q, Y; kwargs... )

    Check whether $X = qY^{\mathrm{T}} + Yq^{\mathrm{T}}$ is a tangent vector to $p=qq^{\mathrm{T}}$ on the Elliptope M, i.e. Y has to be of same dimension as q and a $X$ has to be a symmetric matrix with zero diagonal.

    The tolerance for the base point check and zero diagonal can be set using the kwargs.... Note that symmetric of $X$ holds by construction an is not explicitly checked.

    source
    ManifoldsBase.projectMethod
    project(M::Elliptope, q, Y)

    Project Y onto the tangent space at q, i.e. row-wise onto the oblique manifold.

    source
    ManifoldsBase.representation_sizeMethod
    representation_size(M::Elliptope)

    Return the size of an array representing an element on the Elliptope manifold M, i.e. $n × k$, the size of such factor of $p=qq^{\mathrm{T}}$ on $\mathcal M = \mathcal E(n,k)$.

    source
    ManifoldsBase.retractMethod
    retract(M::Elliptope, q, Y, ::ProjectionRetraction)

    compute a projection based retraction by projecting $q+Y$ back onto the manifold.

    source

    Literature

    diff --git a/v0.8.79/manifolds/essentialmanifold.html b/v0.8.79/manifolds/essentialmanifold.html new file mode 100644 index 0000000000..8881312b78 --- /dev/null +++ b/v0.8.79/manifolds/essentialmanifold.html @@ -0,0 +1,2 @@ + +Essential manifold · Manifolds.jl

    Essential Manifold

    The essential manifold is modeled as an AbstractPowerManifold of the $3\times3$ Rotations and uses NestedPowerRepresentation.

    Manifolds.EssentialManifoldType
    EssentialManifold <: AbstractPowerManifold{ℝ}

    The essential manifold is the space of the essential matrices which is represented as a quotient space of the Rotations manifold product $\mathrm{SO}(3)^2$.

    Let $R_x(θ), R_y(θ), R_x(θ) \in ℝ^{x\times 3}$ denote the rotation around the $z$, $y$, and $x$ axis in $ℝ^3$, respectively, and further the groups

    \[H_z = \bigl\{(R_z(θ),R_z(θ))\ \big|\ θ ∈ [-π,π) \bigr\}\]

    and

    \[H_π = \bigl\{ (I,I), (R_x(π), R_x(π)), (I,R_z(π)), (R_x(π), R_y(π)) \bigr\}\]

    acting elementwise on the left from $\mathrm{SO}(3)^2$ (component wise).

    Then the unsigned Essential manifold $\mathcal{M}_{\text{E}}$ can be identified with the quotient space

    \[\mathcal{M}_{\text{E}} := (\text{SO}(3)×\text{SO}(3))/(H_z × H_π),\]

    and for the signed Essential manifold $\mathcal{M}_{\text{Ǝ}}$, the quotient reads

    \[\mathcal{M}_{\text{Ǝ}} := (\text{SO}(3)×\text{SO}(3))/(H_z).\]

    An essential matrix is defined as

    \[E = (R'_1)^T [T'_2 - T'_1]_{×} R'_2,\]

    where the poses of two cameras $(R_i', T_i'), i=1,2$, are contained in the space of rigid body transformations $SE(3)$ and the operator $[⋅]_{×}\colon ℝ^3 \to \operatorname{SkewSym}(3)$ denotes the matrix representation of the cross product operator. For more details see [TD17].

    Constructor

    EssentialManifold(is_signed=true)

    Generate the manifold of essential matrices, either the signed (is_signed=true) or unsigned (is_signed=false) variant.

    source

    Functions

    Base.expMethod
    exp(M::EssentialManifold, p, X)

    Compute the exponential map on the EssentialManifold from p into direction X, i.e.

    \[\text{exp}_p(X) =\text{exp}_g( \tilde X), \quad g \in \text(SO)(3)^2,\]

    where $\tilde X$ is the horizontal lift of $X$[TD17].

    source
    Base.logMethod
    log(M::EssentialManifold, p, q)

    Compute the logarithmic map on the EssentialManifold M, i.e. the tangent vector, whose geodesic starting from p reaches q after time 1. Here, $p=(R_{p_1},R_{p_2})$ and $q=(R_{q_1},R_{q_2})$ are elements of $SO(3)^2$. We use that any essential matrix can, up to scale, be decomposed to

    \[E = R_1^T [e_z]_{×}R_2,\]

    where $(R_1,R_2)∈SO(3)^2$. Two points in $SO(3)^2$ are equivalent iff their corresponding essential matrices are equal (up to a sign flip). To compute the logarithm, we first move q to another representative of its equivalence class. For this, we find $t= t_{\text{opt}}$ for which the function

    \[f(t) = f_1 + f_2, \quad f_i = \frac{1}{2} θ^2_i(t), \quad θ_i(t)=d(R_{p_i},R_z(t)R_{b_i}) \text{ for } i=1,2,\]

    where $d(⋅,⋅)$ is the distance function in $SO(3)$, is minimized. Further, the group $H_z$ acting on the left on $SO(3)^2$ is defined as

    \[H_z = \{(R_z(θ),R_z(θ))\colon θ \in [-π,π) \},\]

    where $R_z(θ)$ is the rotation around the z axis with angle $θ$. Points in $H_z$ are denoted by $S_z$. Then, the logarithm is defined as

    \[\log_p (S_z(t_{\text{opt}})q) = [\text{Log}(R_{p_i}^T R_z(t_{\text{opt}})R_{b_i})]_{i=1,2},\]

    where $\text{Log}$ is the logarithm on $SO(3)$. For more details see [TD17].

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::EssentialManifold, p, X; kwargs... )

    Check whether X is a tangent vector to manifold point p on the EssentialManifold M, i.e. X has to be a 2-element array of 3-by-3 skew-symmetric matrices.

    source
    ManifoldsBase.distanceMethod
    distance(M::EssentialManifold, p, q)

    Compute the Riemannian distance between the two points p and q on the EssentialManifold. This is done by computing the distance of the equivalence classes $[p]$ and $[q]$ of the points $p=(R_{p_1},R_{p_2}), q=(R_{q_1},R_{q_2}) ∈ SO(3)^2$, respectively. Two points in $SO(3)^2$ are equivalent iff their corresponding essential matrices, given by

    \[E = R_1^T [e_z]_{×}R_2,\]

    are equal (up to a sign flip). Using the logarithmic map, the distance is given by

    \[\text{dist}([p],[q]) = \| \text{log}_{[p]} [q] \| = \| \log_p (S_z(t_{\text{opt}})q) \|,\]

    where $S_z ∈ H_z = \{(R_z(θ),R_z(θ))\colon θ \in [-π,π) \}$ in which $R_z(θ)$ is the rotation around the z axis with angle $θ$ and $t_{\text{opt}}$ is the minimizer of the cost function

    \[f(t) = f_1 + f_2, \quad f_i = \frac{1}{2} θ^2_i(t), \quad θ_i(t)=d(R_{p_i},R_z(t)R_{b_i}) \text{ for } i=1,2,\]

    where $d(⋅,⋅)$ is the distance function in $SO(3)$ [TD17].

    source
    ManifoldsBase.projectMethod
    project(M::EssentialManifold, p, X)

    Project the matrix X onto the tangent space

    \[T_{p} \text{SO}(3)^2 = T_{\text{vp}}\text{SO}(3)^2 ⊕ T_{\text{hp}}\text{SO}(3)^2,\]

    by first computing its projection onto the vertical space $T_{\text{vp}}\text{SO}(3)^2$ using vert_proj. Then the orthogonal projection of X onto the horizontal space $T_{\text{hp}}\text{SO}(3)^2$ is defined as

    \[\Pi_h(X) = X - \frac{\text{vert\_proj}_p(X)}{2} \begin{bmatrix} R_1^T e_z \\ R_2^T e_z \end{bmatrix},\]

    with $R_i = R_0 R'_i, i=1,2,$ where $R'_i$ is part of the pose of camera $i$ $g_i = (R'_i,T'_i) ∈ \text{SE}(3)$ and $R_0 ∈ \text{SO}(3)$ such that $R_0(T'_2-T'_1) = e_z$.

    source

    Internal Functions

    Manifolds.dist_min_angle_pairMethod
    dist_min_angle_pair(p, q)

    This function computes the global minimizer of the function

    \[f(t) = f_1 + f_2, \quad f_i = \frac{1}{2} θ^2_i(t), \quad θ_i(t)=d(R_{p_i},R_z(t)R_{b_i}) \text{ for } i=1,2,\]

    for the given values. This is done by finding the discontinuity points $t_{d_i}, i=1,2$ of its derivative and using Newton's method to minimize the function over the intervals $[t_{d_1},t_{d_2}]$ and $[t_{d_2},t_{d_1}+2π]$ separately. Then, the minimizer for which $f$ is minimal is chosen and given back together with the minimal value. For more details see Algorithm 1 in [TD17].

    source
    Manifolds.dist_min_angle_pair_df_newtonMethod
    dist_min_angle_pair_df_newton(m1, Φ1, c1, m2, Φ2, c2, t_min, t_low, t_high)

    This function computes the minimizer of the function

    \[f(t) = f_1 + f_2, \quad f_i = \frac{1}{2} θ^2_i(t), \quad θ_i(t)=d(R_{p_i},R_z(t)R_{b_i}) \text{ for } i=1,2,\]

    in the interval $[$t_low, t_high$]$ using Newton's method. For more details see [TD17].

    source
    Manifolds.dist_min_angle_pair_discontinuity_distanceMethod
    dist_min_angle_pair_discontinuity_distance(q)

    This function computes the point $t_{\text{di}}$ for which the first derivative of

    \[f(t) = f_1 + f_2, \quad f_i = \frac{1}{2} θ^2_i(t), \quad θ_i(t)=d(R_{p_i},R_z(t)R_{b_i}) \text{ for } i=1,2,\]

    does not exist. This is the case for $\sin(θ_i(t_{\text{di}})) = 0$. For more details see Proposition 9 and its proof, as well as Lemma 1 in [TD17].

    source
    Manifolds.vert_projMethod
    vert_proj(M::EssentialManifold, p, X)

    Project X onto the vertical space $T_{\text{vp}}\text{SO}(3)^2$ with

    \[\text{vert\_proj}_p(X) = e_z^T(R_1 X_1 + R_2 X_2),\]

    where $e_z$ is the third unit vector, $X_i ∈ T_{p}\text{SO}(3)$ for $i=1,2,$ and it holds $R_i = R_0 R'_i, i=1,2,$ where $R'_i$ is part of the pose of camera $i$ $g_i = (R_i,T'_i) ∈ \text{SE}(3)$ and $R_0 ∈ \text{SO}(3)$ such that $R_0(T'_2-T'_1) = e_z$ [TD17].

    source

    Literature

    diff --git a/v0.8.79/manifolds/euclidean.html b/v0.8.79/manifolds/euclidean.html new file mode 100644 index 0000000000..81e241efa5 --- /dev/null +++ b/v0.8.79/manifolds/euclidean.html @@ -0,0 +1,4 @@ + +Euclidean · Manifolds.jl

    Euclidean space

    The Euclidean space $ℝ^n$ is a simple model space, since it has curvature constantly zero everywhere; hence, nearly all operations simplify. The easiest way to generate an Euclidean space is to use a field, i.e. AbstractNumbers, e.g. to create the $ℝ^n$ or $ℝ^{n\times n}$ you can simply type M = ℝ^n or ℝ^(n,n), respectively.

    Manifolds.EuclideanType
    Euclidean{T<:Tuple,𝔽} <: AbstractManifold{𝔽}

    Euclidean vector space.

    Constructor

    Euclidean(n)

    Generate the $n$-dimensional vector space $ℝ^n$.

    Euclidean(n₁,n₂,...,nᵢ; field=ℝ)
    +𝔽^(n₁,n₂,...,nᵢ) = Euclidean(n₁,n₂,...,nᵢ; field=𝔽)

    Generate the vector space of $k = n_1 \cdot n_2 \cdot … \cdot n_i$ values, i.e. the manifold $𝔽^{n_1, n_2, …, n_i}$, $𝔽\in\{ℝ,ℂ\}$, whose elements are interpreted as $n_1 × n_2 × … × n_i$ arrays. For $i=2$ we obtain a matrix space. The default field=ℝ can also be set to field=ℂ. The dimension of this space is $k \dim_ℝ 𝔽$, where $\dim_ℝ 𝔽$ is the real_dimension of the field $𝔽$.

    Euclidean(; field=ℝ)

    Generate the 1D Euclidean manifold for an -, -valued real- or complex-valued immutable values (in contrast to 1-element arrays from the constructor above).

    source
    Base.expMethod
    exp(M::Euclidean, p, X)

    Compute the exponential map on the Euclidean manifold M from p in direction X, which in this case is just

    \[\exp_p X = p + X.\]

    source
    Base.logMethod
    log(M::Euclidean, p, q)

    Compute the logarithmic map on the Euclidean M from p to q, which in this case is just

    \[\log_p q = q-p.\]

    source
    LinearAlgebra.normMethod
    norm(M::Euclidean, p, X)

    Compute the norm of a tangent vector X at p on the Euclidean M, i.e. since every tangent space can be identified with M itself in this case, just the (Frobenius) norm of X.

    source
    ManifoldsBase.WeingartenMethod
    Y = Weingarten(M::Euclidean, p, X, V)
    +Weingarten!(M::Euclidean, Y, p, X, V)

    Compute the Weingarten map $\mathcal W_p$ at p on the Euclidean M with respect to the tangent vector $X \in T_p\mathcal M$ and the normal vector $V \in N_p\mathcal M$.

    Since this a flat space by itself, the result is always the zero tangent vector.

    source
    ManifoldsBase.distanceMethod
    distance(M::Euclidean, p, q)

    Compute the Euclidean distance between two points on the Euclidean manifold M, i.e. for vectors it's just the norm of the difference, for matrices and higher order arrays, the matrix and ternsor Frobenius norm, respectively.

    source
    ManifoldsBase.embedMethod
    embed(M::Euclidean, p, X)

    Embed the tangent vector X at point p in M. Equivalent to an identity map.

    source
    ManifoldsBase.innerMethod
    inner(M::Euclidean, p, X, Y)

    Compute the inner product on the Euclidean M, which is just the inner product on the real-valued or complex valued vector space of arrays (or tensors) of size $n_1 × n_2 × … × n_i$, i.e.

    \[g_p(X,Y) = \sum_{k ∈ I} \overline{X}_{k} Y_{k},\]

    where $I$ is the set of vectors $k ∈ ℕ^i$, such that for all

    $i ≤ j ≤ i$ it holds $1 ≤ k_j ≤ n_j$ and $\overline{\cdot}$ denotes the complex conjugate.

    For the special case of $i ≤ 2$, i.e. matrices and vectors, this simplifies to

    \[g_p(X,Y) = X^{\mathrm{H}}Y,\]

    where $\cdot^{\mathrm{H}}$ denotes the Hermitian, i.e. complex conjugate transposed.

    source
    ManifoldsBase.projectMethod
    project(M::Euclidean, p, X)

    Project an arbitrary vector X into the tangent space of a point p on the Euclidean M, which is just the identity, since any tangent space of M can be identified with all of M.

    source
    ManifoldsBase.vector_transport_toMethod
    vector_transport_to(M::Euclidean, p, X, q, ::AbstractVectorTransportMethod)

    Transport the vector X from the tangent space at p to the tangent space at q on the Euclidean M, which simplifies to the identity.

    source
    diff --git a/v0.8.79/manifolds/fixedrankmatrices.html b/v0.8.79/manifolds/fixedrankmatrices.html new file mode 100644 index 0000000000..0140305bfb --- /dev/null +++ b/v0.8.79/manifolds/fixedrankmatrices.html @@ -0,0 +1,20 @@ + +Fixed-rank matrices · Manifolds.jl

    Fixed-rank matrices

    Manifolds.FixedRankMatricesType
    FixedRankMatrices{m,n,k,𝔽} <: AbstractDecoratorManifold{𝔽}

    The manifold of $m × n$ real-valued or complex-valued matrices of fixed rank $k$, i.e.

    \[\bigl\{ p ∈ 𝔽^{m × n}\ \big|\ \operatorname{rank}(p) = k\bigr\},\]

    where $𝔽 ∈ \{ℝ,ℂ\}$ and the rank is the number of linearly independent columns of a matrix.

    Representation with 3 matrix factors

    A point $p ∈ \mathcal M$ can be stored using unitary matrices $U ∈ 𝔽^{m × k}$, $V ∈ 𝔽^{n × k}$ as well as the $k$ singular values of $p = U_p S V_p^\mathrm{H}$, where $\cdot^{\mathrm{H}}$ denotes the complex conjugate transpose or Hermitian. In other words, $U$ and $V$ are from the manifolds Stiefel(m,k,𝔽) and Stiefel(n,k,𝔽), respectively; see SVDMPoint for details.

    The tangent space $T_p \mathcal M$ at a point $p ∈ \mathcal M$ with $p=U_p S V_p^\mathrm{H}$ is given by

    \[T_p\mathcal M = \bigl\{ U_p M V_p^\mathrm{H} + U_X V_p^\mathrm{H} + U_p V_X^\mathrm{H} : + M ∈ 𝔽^{k × k}, + U_X ∈ 𝔽^{m × k}, + V_X ∈ 𝔽^{n × k} + \text{ s.t. } + U_p^\mathrm{H}U_X = 0_k, + V_p^\mathrm{H}V_X = 0_k +\bigr\},\]

    where $0_k$ is the $k × k$ zero matrix. See UMVTVector for details.

    The (default) metric of this manifold is obtained by restricting the metric on $ℝ^{m × n}$ to the tangent bundle [Van13].

    Constructor

    FixedRankMatrices(m, n, k[, field=ℝ])

    Generate the manifold of m-by-n (field-valued) matrices of rank k.

    source
    Manifolds.SVDMPointType
    SVDMPoint <: AbstractManifoldPoint

    A point on a certain manifold, where the data is stored in a svd like fashion, i.e. in the form $USV^\mathrm{H}$, where this structure stores $U$, $S$ and $V^\mathrm{H}$. The storage might also be shortened to just $k$ singular values and accordingly shortened $U$ (columns) and $V^\mathrm{H}$ (rows).

    Constructors

    • SVDMPoint(A) for a matrix A, stores its svd factors (i.e. implicitly $k=\min\{m,n\}$)
    • SVDMPoint(S) for an SVD object, stores its svd factors (i.e. implicitly $k=\min\{m,n\}$)
    • SVDMPoint(U,S,Vt) for the svd factors to initialize the SVDMPoint(i.e. implicitlyk=\min\{m,n\}`)
    • SVDMPoint(A,k) for a matrix A, stores its svd factors shortened to the best rank $k$ approximation
    • SVDMPoint(S,k) for an SVD object, stores its svd factors shortened to the best rank $k$ approximation
    • SVDMPoint(U,S,Vt,k) for the svd factors to initialize the SVDMPoint, stores its svd factors shortened to the best rank $k$ approximation
    source
    Manifolds.UMVTVectorType
    UMVTVector <: TVector

    A tangent vector that can be described as a product $U_p M V_p^\mathrm{H} + U_X V_p^\mathrm{H} + U_p V_X^\mathrm{H}$, where $X = U_X S V_X^\mathrm{H}$ is its base point, see for example FixedRankMatrices.

    The base point $p$ is required for example embedding this point, but it is not stored. The fields of thie tangent vector are U for $U_X$, M and Vt to store $V_X^\mathrm{H}$

    Constructors

    • UMVTVector(U,M,Vt) store umv factors to initialize the UMVTVector
    • UMVTVector(U,M,Vt,k) store the umv factors after shortening them down to inner dimensions k.
    source
    Base.randMethod
    Random.rand(M::FixedRankMatrices; vector_at=nothing, kwargs...)

    If vector_at is nothing, return a random point on the FixedRankMatrices manifold. The orthogonal matrices are sampled from the Stiefel manifold and the singular values are sampled uniformly at random.

    If vector_at is not nothing, generate a random tangent vector in the tangent space of the point vector_at on the FixedRankMatrices manifold M.

    source
    ManifoldDiff.riemannian_HessianMethod
    Y = riemannian_Hessian(M::FixedRankMatrices, p, G, H, X)
    +riemannian_Hessian!(M::FixedRankMatrices, Y, p, G, H, X)

    Compute the Riemannian Hessian $\operatorname{Hess} f(p)[X]$ given the Euclidean gradient $∇ f(\tilde p)$ in G and the Euclidean Hessian $∇^2 f(\tilde p)[\tilde X]$ in H, where $\tilde p, \tilde X$ are the representations of $p,X$ in the embedding,.

    The Riemannian Hessian can be computed as stated in Remark 4.1 [Ngu23] or Section 2.3 [Van13], that B. Vandereycken adopted for Manopt (Matlab).

    source
    ManifoldsBase.check_pointMethod
    check_point(M::FixedRankMatrices{m,n,k}, p; kwargs...)

    Check whether the matrix or SVDMPoint x ids a valid point on the FixedRankMatrices{m,n,k,𝔽} M, i.e. is an m-byn matrix of rank k. For the SVDMPoint the internal representation also has to have the right shape, i.e. p.U and p.Vt have to be unitary. The keyword arguments are passed to the rank function that verifies the rank of p.

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M:FixedRankMatrices{m,n,k}, p, X; kwargs...)

    Check whether the tangent UMVTVector X is from the tangent space of the SVDMPoint p on the FixedRankMatrices M, i.e. that v.U and v.Vt are (columnwise) orthogonal to x.U and x.Vt, respectively, and its dimensions are consistent with p and X.M, i.e. correspond to m-by-n matrices of rank k.

    source
    ManifoldsBase.embedMethod
    embed(M::FixedRankMatrices, p, X)

    Embed the tangent vector X at point p in M from its UMVTVector representation into the set of $m×n$ matrices.

    The formula reads

    \[U_pMV_p^{\mathrm{H}} + U_XV_p^{\mathrm{H}} + U_pV_X^{\mathrm{H}}\]

    source
    ManifoldsBase.embedMethod
    embed(::FixedRankMatrices, p::SVDMPoint)

    Embed the point p from its SVDMPoint representation into the set of $m×n$ matrices by computing $USV^{\mathrm{H}}$.

    source
    ManifoldsBase.innerMethod
    inner(M::FixedRankMatrices, p::SVDMPoint, X::UMVTVector, Y::UMVTVector)

    Compute the inner product of X and Y in the tangent space of p on the FixedRankMatrices M, which is inherited from the embedding, i.e. can be computed using dot on the elements (U, Vt, M) of X and Y.

    source
    ManifoldsBase.retractMethod
    retract(M, p, X, ::PolarRetraction)

    Compute an SVD-based retraction on the FixedRankMatrices M by computing

    \[ q = U_kS_kV_k^\mathrm{H},\]

    where $U_k S_k V_k^\mathrm{H}$ is the shortened singular value decomposition $USV^\mathrm{H}=p+X$, in the sense that $S_k$ is the diagonal matrix of size $k × k$ with the $k$ largest singular values and $U$ and $V$ are shortened accordingly.

    source

    Literature

    [HU17]
    +
    +
    S. Hosseini and A. Uschmajew. A Riemannian Gradient Sampling Algorithm for Nonsmooth Optimization on Manifolds. SIAM J. Optim. 27, 173–189 (2017).
    +
    [Ngu23]
    +
    +
    D. Nguyen. Operator-Valued Formulas for Riemannian Gradient and Hessian and Families of Tractable Metrics in Riemannian Optimization. Journal of Optimization Theory and Applications 198, 135–164 (2023), arXiv:2009.10159.
    +
    [Van13]
    +
    +
    B. Vandereycken. Low-rank matrix completion by Riemannian optimization. SIAM Journal on Optimization 23, 1214–1236 (2013).
    +
    +
    diff --git a/v0.8.79/manifolds/flag.html b/v0.8.79/manifolds/flag.html new file mode 100644 index 0000000000..587a16d9b9 --- /dev/null +++ b/v0.8.79/manifolds/flag.html @@ -0,0 +1,19 @@ + +Flag · Manifolds.jl

    Flag manifold

    Manifolds.FlagType
    Flag{N,d} <: AbstractDecoratorManifold{ℝ}

    Flag manifold of $d$ subspaces of $ℝ^N$ [YWL21]. By default the manifold uses the Stiefel coordinates representation, embedding it in the Stiefel manifold. The other available representation is an embedding in OrthogonalMatrices. It can be utilized using OrthogonalPoint and OrthogonalTVector wrappers.

    Tangent space is represented in the block-skew-symmetric form.

    Constructor

    Flag(N, n1, n2, ..., nd)

    Generate the manifold $\operatorname{Flag}(n_1, n_2, ..., n_d; N)$ of subspaces

    \[𝕍_1 ⊆ 𝕍_2 ⊆ ⋯ ⊆ V_d, \quad \operatorname{dim}(𝕍_i) = n_i\]

    where $𝕍_i$ for $i ∈ 1, 2, …, d$ are subspaces of $ℝ^N$ of dimension $\operatorname{dim} 𝕍_i = n_i$.

    source
    Manifolds.OrthogonalPointType
    OrthogonalPoint <: AbstractManifoldPoint

    A type to represent points on a manifold Flag in the orthogonal coordinates representation, i.e. a rotation matrix.

    source
    Manifolds.ZeroTupleType
    ZeroTuple

    Internal structure for representing shape of a Flag manifold. Behaves like a normal tuple, except at index zero returns value 0.

    source
    Base.convertMethod
    convert(::Type{AbstractMatrix}, M::Flag, p::OrthogonalPoint, X::OrthogonalTVector)

    Convert tangent vector from Flag manifold M from orthogonal representation to Stiefel representation.

    source
    Base.convertMethod
    convert(::Type{AbstractMatrix}, M::Flag, p::OrthogonalPoint)

    Convert point p from Flag manifold M from orthogonal representation to Stiefel representation.

    source
    Base.convertMethod
    convert(::Type{OrthogonalPoint}, M::Flag, p::AbstractMatrix)

    Convert point p from Flag manifold M from Stiefel representation to orthogonal representation.

    source
    Base.convertMethod
    convert(::Type{OrthogonalTVector}, M::Flag, p::AbstractMatrix, X::AbstractMatrix)

    Convert tangent vector from Flag manifold M from Stiefel representation to orthogonal representation.

    source
    ManifoldsBase.manifold_dimensionMethod
    manifold_dimension(M::Flag)

    Return dimension of flag manifold $\operatorname{Flag}(n_1, n_2, ..., n_d; N)$. The formula reads $\sum_{i=1}^d (n_i-n_{i-1})(N-n_i)$.

    source

    The flag manifold represented as points on the Stiefel manifold

    ManifoldsBase.check_vectorMethod
    check_vector(M::Flag, p::AbstractMatrix, X::AbstractMatrix; kwargs... )

    Check whether X is a tangent vector to point p on the Flag manifold M $\operatorname{Flag}(n_1, n_2, ..., n_d; N)$ in the Stiefel representation, i.e. that X is a matrix of the form

    \[X = \begin{bmatrix} +0 & B_{1,2} & \cdots & B_{1,d} \\ +-B_{1,2}^\mathrm{T} & 0 & \cdots & B_{2,d} \\ +\vdots & \vdots & \ddots & \vdots \\ +-B_{1,d}^\mathrm{T} & -B_{2,d}^\mathrm{T} & \cdots & 0 \\ +-B_{1,d+1}^\mathrm{T} & -B_{2,d+1}^\mathrm{T} & \cdots & -B_{d,d+1}^\mathrm{T} +\end{bmatrix}\]

    where $B_{i,j} ∈ ℝ^{(n_i - n_{i-1}) × (n_j - n_{j-1})}$, for $1 ≤ i < j ≤ d+1$.

    source
    ManifoldsBase.projectMethod
    project(::Flag, p, X)

    Project vector X in the Euclidean embedding to the tangent space at point p on Flag manifold. The formula reads [YWL21]:

    \[Y_i = X_i - (p_i p_i^{\mathrm{T}}) X_i + \sum_{j \neq i} p_j X_j^{\mathrm{T}} p_i\]

    for $i$ from 1 to $d$ where the resulting vector is $Y = [Y_1, Y_2, …, Y_d]$ and $X = [X_1, X_2, …, X_d]$, $p = [p_1, p_2, …, p_d]$ are decompositions into basis vector matrices for consecutive subspaces of the flag.

    source
    ManifoldsBase.retractMethod
    retract(M::Flag, p, X, ::PolarRetraction)

    Compute the SVD-based retraction PolarRetraction on the Flag M. With $USV = p + X$ the retraction reads

    \[\operatorname{retr}_p X = UV^\mathrm{H},\]

    where $\cdot^{\mathrm{H}}$ denotes the complex conjugate transposed or Hermitian.

    source

    The flag manifold represented as orthogonal matrices

    ManifoldsBase.check_vectorMethod
    check_vector(M::Flag, p::OrthogonalPoint, X::OrthogonalTVector; kwargs... )

    Check whether X is a tangent vector to point p on the Flag manifold M $\operatorname{Flag}(n_1, n_2, ..., n_d; N)$ in the orthogonal matrix representation, i.e. that X is block-skew-symmetric with zero diagonal:

    \[X = \begin{bmatrix} +0 & B_{1,2} & \cdots & B_{1,d+1} \\ +-B_{1,2}^\mathrm{T} & 0 & \cdots & B_{2,d+1} \\ +\vdots & \vdots & \ddots & \vdots \\ +-B_{1,d+1}^\mathrm{T} & -B_{2,d+1}^\mathrm{T} & \cdots & 0 +\end{bmatrix}\]

    where $B_{i,j} ∈ ℝ^{(n_i - n_{i-1}) × (n_j - n_{j-1})}$, for $1 ≤ i < j ≤ d+1$.

    source
    ManifoldsBase.projectMethod
    project(M::Flag, p::OrthogonalPoint, X::OrthogonalTVector)

    Project vector X to tangent space at point p from Flag manifold M $\operatorname{Flag}(n_1, n_2, ..., n_d; N)$, in the orthogonal matrix representation. It works by first projecting X to the space of SkewHermitianMatrices and then setting diagonal blocks to 0:

    \[X = \begin{bmatrix} +0 & B_{1,2} & \cdots & B_{1,d+1} \\ +-B_{1,2}^\mathrm{T} & 0 & \cdots & B_{2,d+1} \\ +\vdots & \vdots & \ddots & \vdots \\ +-B_{1,d+1}^\mathrm{T} & -B_{2,d+1}^\mathrm{T} & \cdots & 0 +\end{bmatrix}\]

    where $B_{i,j} ∈ ℝ^{(n_i - n_{i-1}) × (n_j - n_{j-1})}$, for $1 ≤ i < j ≤ d+1$.

    source
    ManifoldsBase.retractMethod
    retract(M::Flag, p::OrthogonalPoint, X::OrthogonalTVector, ::QRRetraction)

    Compute the QR retraction on the Flag in the orthogonal matrix representation as the first order approximation to the exponential map. Similar to QR retraction for [GeneralUnitaryMatrices].

    source
    diff --git a/v0.8.79/manifolds/generalizedgrassmann.html b/v0.8.79/manifolds/generalizedgrassmann.html new file mode 100644 index 0000000000..db8c55b19c --- /dev/null +++ b/v0.8.79/manifolds/generalizedgrassmann.html @@ -0,0 +1,11 @@ + +Generalized Grassmann · Manifolds.jl

    Generalized Grassmann

    Manifolds.GeneralizedGrassmannType
    GeneralizedGrassmann{n,k,𝔽} <: AbstractDecoratorManifold{𝔽}

    The generalized Grassmann manifold $\operatorname{Gr}(n,k,B)$ consists of all subspaces spanned by $k$ linear independent vectors $𝔽^n$, where $𝔽 ∈ \{ℝ, ℂ\}$ is either the real- (or complex-) valued vectors. This yields all $k$-dimensional subspaces of $ℝ^n$ for the real-valued case and all $2k$-dimensional subspaces of $ℂ^n$ for the second.

    The manifold can be represented as

    \[\operatorname{Gr}(n, k, B) := \bigl\{ \operatorname{span}(p)\ \big|\ p ∈ 𝔽^{n × k}, p^\mathrm{H}Bp = I_k\},\]

    where $\cdot^{\mathrm{H}}$ denotes the complex conjugate (or Hermitian) transpose and $I_k$ is the $k × k$ identity matrix. This means, that the columns of $p$ form an unitary basis of the subspace with respect to the scaled inner product, that is a point on $\operatorname{Gr}(n,k,B)$, and hence the subspace can actually be represented by a whole equivalence class of representers. For $B=I_n$ this simplifies to the Grassmann manifold.

    The tangent space at a point (subspace) $p$ is given by

    \[T_x\mathrm{Gr}(n,k,B) = \bigl\{ +X ∈ 𝔽^{n × k} : +X^{\mathrm{H}}Bp + p^{\mathrm{H}}BX = 0_{k} \bigr\},\]

    where $0_{k}$ denotes the $k × k$ zero matrix.

    Note that a point $p ∈ \operatorname{Gr}(n,k,B)$ might be represented by different matrices (i.e. matrices with $B$-unitary column vectors that span the same subspace). Different representations of $p$ also lead to different representation matrices for the tangent space $T_p\mathrm{Gr}(n,k,B)$

    The manifold is named after Hermann G. Graßmann (1809-1877).

    Constructor

    GeneralizedGrassmann(n, k, B=I_n, field=ℝ)

    Generate the (real-valued) Generalized Grassmann manifold of $n\times k$ dimensional orthonormal matrices with scalar product B.

    source
    Base.expMethod
    exp(M::GeneralizedGrassmann, p, X)

    Compute the exponential map on the GeneralizedGrassmann M$= \mathrm{Gr}(n,k,B)$ starting in p with tangent vector (direction) X. Let $X^{\mathrm{H}}BX = USV$ denote the SVD decomposition of $X^{\mathrm{H}}BX$. Then the exponential map is written using

    \[\exp_p X = p V\cos(S)V^\mathrm{H} + U\sin(S)V^\mathrm{H},\]

    where $\cdot^{\mathrm{H}}$ denotes the complex conjugate transposed or Hermitian and the cosine and sine are applied element wise to the diagonal entries of $S$.

    source
    Base.logMethod
    log(M::GeneralizedGrassmann, p, q)

    Compute the logarithmic map on the GeneralizedGrassmann M$ = \mathcal M=\mathrm{Gr}(n,k,B)$, i.e. the tangent vector X whose corresponding geodesic starting from p reaches q after time 1 on M. The formula reads

    \[\log_p q = V\cdot \operatorname{atan}(S) \cdot U^\mathrm{H},\]

    where $\cdot^{\mathrm{H}}$ denotes the complex conjugate transposed or Hermitian. The matrices $U$ and $V$ are the unitary matrices, and $S$ is the diagonal matrix containing the singular values of the SVD-decomposition

    \[USV = (q^\mathrm{H}Bp)^{-1} ( q^\mathrm{H} - q^\mathrm{H}Bpp^\mathrm{H}).\]

    In this formula the $\operatorname{atan}$ is meant elementwise.

    source
    Base.randMethod
    rand(::GeneralizedGrassmann; vector_at=nothing, σ::Real=1.0)

    When vector_at is nothing, return a random (Gaussian) point p on the GeneralizedGrassmann manifold M by generating a (Gaussian) matrix with standard deviation σ and return the (generalized) orthogonalized version, i.e. return the projection onto the manifold of the Q component of the QR decomposition of the random matrix of size $n×k$.

    When vector_at is not nothing, return a (Gaussian) random vector from the tangent space $T_{vector\_at}\mathrm{St}(n,k)$ with mean zero and standard deviation σ by projecting a random Matrix onto the tangent vector at vector_at.

    source
    ManifoldsBase.change_metricMethod
    change_metric(M::GeneralizedGrassmann, ::EuclideanMetric, p X)

    Change X to the corresponding vector with respect to the metric of the GeneralizedGrassmann M, i.e. let $B=LL'$ be the Cholesky decomposition of the matrix M.B, then the corresponding vector is $L\X$.

    source
    ManifoldsBase.change_representerMethod
    change_representer(M::GeneralizedGrassmann, ::EuclideanMetric, p, X)

    Change X to the corresponding representer of a cotangent vector at p with respect to the scaled metric of the GeneralizedGrassmann M, i.e, since

    \[g_p(X,Y) = \operatorname{tr}(Y^{\mathrm{H}}BZ) = \operatorname{tr}(X^{\mathrm{H}}Z) = ⟨X,Z⟩\]

    has to hold for all $Z$, where the repreenter X is given, the resulting representer with respect to the metric on the GeneralizedGrassmann is given by $Y = B^{-1}X$.

    source
    ManifoldsBase.check_pointMethod
    check_point(M::GeneralizedGrassmann{n,k,𝔽}, p)

    Check whether p is representing a point on the GeneralizedGrassmann M, i.e. its a n-by-k matrix of unitary column vectors with respect to the B inner prudct and of correct eltype with respect to 𝔽.

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::GeneralizedGrassmann{n,k,𝔽}, p, X; kwargs...)

    Check whether X is a tangent vector in the tangent space of p on the GeneralizedGrassmann M, i.e. that X is of size and type as well as that

    \[ p^{\mathrm{H}}BX + \overline{X^{\mathrm{H}}Bp} = 0_k,\]

    where $\cdot^{\mathrm{H}}$ denotes the complex conjugate transpose or Hermitian, $\overline{\cdot}$ the (elementwise) complex conjugate, and $0_k$ denotes the $k × k$ zero natrix.

    source
    ManifoldsBase.distanceMethod
    distance(M::GeneralizedGrassmann, p, q)

    Compute the Riemannian distance on GeneralizedGrassmann manifold M$= \mathrm{Gr}(n,k,B)$.

    The distance is given by

    \[d_{\mathrm{Gr}(n,k,B)}(p,q) = \operatorname{norm}(\log_p(q)).\]

    source
    ManifoldsBase.innerMethod
    inner(M::GeneralizedGrassmann, p, X, Y)

    Compute the inner product for two tangent vectors X, Y from the tangent space of p on the GeneralizedGrassmann manifold M. The formula reads

    \[g_p(X,Y) = \operatorname{tr}(X^{\mathrm{H}}BY),\]

    where $\cdot^{\mathrm{H}}$ denotes the complex conjugate transposed or Hermitian.

    source
    ManifoldsBase.projectMethod
    project(M::GeneralizedGrassmann, p, X)

    Project the n-by-k X onto the tangent space of p on the GeneralizedGrassmann M, which is computed by

    \[\operatorname{proj_p}(X) = X - pp^{\mathrm{H}}B^\mathrm{T}X,\]

    where $\cdot^{\mathrm{H}}$ denotes the complex conjugate transposed or Hermitian and $\cdot^{\mathrm{T}}$ the transpose.

    source
    ManifoldsBase.projectMethod
    project(M::GeneralizedGrassmann, p)

    Project p from the embedding onto the GeneralizedGrassmann M, i.e. compute q as the polar decomposition of $p$ such that $q^{\mathrm{H}}Bq$ is the identity, where $\cdot^{\mathrm{H}}$ denotes the Hermitian, i.e. complex conjugate transpose.

    source
    diff --git a/v0.8.79/manifolds/generalizedstiefel.html b/v0.8.79/manifolds/generalizedstiefel.html new file mode 100644 index 0000000000..a26f605fcd --- /dev/null +++ b/v0.8.79/manifolds/generalizedstiefel.html @@ -0,0 +1,8 @@ + +Generalized Stiefel · Manifolds.jl

    Generalized Stiefel

    Manifolds.GeneralizedStiefelType
    GeneralizedStiefel{n,k,𝔽,B} <: AbstractDecoratorManifold{𝔽}

    The Generalized Stiefel manifold consists of all $n\times k$, $n\geq k$ orthonormal matrices w.r.t. an arbitrary scalar product with symmetric positive definite matrix $B\in R^{n × n}$, i.e.

    \[\operatorname{St}(n,k,B) = \bigl\{ p \in \mathbb F^{n × k}\ \big|\ p^{\mathrm{H}} B p = I_k \bigr\},\]

    where $𝔽 ∈ \{ℝ, ℂ\}$, $\cdot^{\mathrm{H}}$ denotes the complex conjugate transpose or Hermitian, and $I_k \in \mathbb R^{k × k}$ denotes the $k × k$ identity matrix.

    In the case $B=I_k$ one gets the usual Stiefel manifold.

    The tangent space at a point $p\in\mathcal M=\operatorname{St}(n,k,B)$ is given by

    \[T_p\mathcal M = \{ X \in 𝔽^{n × k} : p^{\mathrm{H}}BX + X^{\mathrm{H}}Bp=0_n\},\]

    where $0_k$ is the $k × k$ zero matrix.

    This manifold is modeled as an embedded manifold to the Euclidean, i.e. several functions like the zero_vector are inherited from the embedding.

    The manifold is named after Eduard L. Stiefel (1909–1978).

    Constructor

    GeneralizedStiefel(n, k, B=I_n, F=ℝ)

    Generate the (real-valued) Generalized Stiefel manifold of $n\times k$ dimensional orthonormal matrices with scalar product B.

    source
    Base.randMethod
    rand(::GeneralizedStiefel; vector_at=nothing, σ::Real=1.0)

    When vector_at is nothing, return a random (Gaussian) point p on the GeneralizedStiefel manifold M by generating a (Gaussian) matrix with standard deviation σ and return the (generalized) orthogonalized version, i.e. return the projection onto the manifold of the Q component of the QR decomposition of the random matrix of size $n×k$.

    When vector_at is not nothing, return a (Gaussian) random vector from the tangent space $T_{vector\_at}\mathrm{St}(n,k)$ with mean zero and standard deviation σ by projecting a random Matrix onto the tangent vector at vector_at.

    source
    ManifoldsBase.check_pointMethod
    check_point(M::GeneralizedStiefel, p; kwargs...)

    Check whether p is a valid point on the GeneralizedStiefel M=$\operatorname{St}(n,k,B)$, i.e. that it has the right AbstractNumbers type and $x^{\mathrm{H}}Bx$ is (approximately) the identity, where $\cdot^{\mathrm{H}}$ is the complex conjugate transpose. The settings for approximately can be set with kwargs....

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::GeneralizedStiefel, p, X; kwargs...)

    Check whether X is a valid tangent vector at p on the GeneralizedStiefel M=$\operatorname{St}(n,k,B)$, i.e. the AbstractNumbers fits, p is a valid point on M and it (approximately) holds that $p^{\mathrm{H}}BX + \overline{X^{\mathrm{H}}Bp} = 0$, where kwargs... is passed to the isapprox.

    source
    ManifoldsBase.innerMethod
    inner(M::GeneralizedStiefel, p, X, Y)

    Compute the inner product for two tangent vectors X, Y from the tangent space of p on the GeneralizedStiefel manifold M. The formula reads

    \[(X, Y)_p = \operatorname{trace}(v^{\mathrm{H}}Bw),\]

    i.e. the metric induced by the scalar product B from the embedding, restricted to the tangent space.

    source
    ManifoldsBase.manifold_dimensionMethod
    manifold_dimension(M::GeneralizedStiefel)

    Return the dimension of the GeneralizedStiefel manifold M=$\operatorname{St}(n,k,B,𝔽)$. The dimension is given by

    \[\begin{aligned} +\dim \mathrm{St}(n, k, B, ℝ) &= nk - \frac{1}{2}k(k+1) \\ +\dim \mathrm{St}(n, k, B, ℂ) &= 2nk - k^2\\ +\dim \mathrm{St}(n, k, B, ℍ) &= 4nk - k(2k-1) +\end{aligned}\]

    source
    ManifoldsBase.projectMethod
    project(M:GeneralizedStiefel, p, X)

    Project X onto the tangent space of p to the GeneralizedStiefel manifold M. The formula reads

    \[\operatorname{proj}_{\operatorname{St}(n,k)}(p,X) = X - p\operatorname{Sym}(p^{\mathrm{H}}BX),\]

    where $\operatorname{Sym}(y)$ is the symmetrization of $y$, e.g. by $\operatorname{Sym}(y) = \frac{y^{\mathrm{H}}+y}{2}$.

    source
    ManifoldsBase.projectMethod
    project(M::GeneralizedStiefel,p)

    Project p from the embedding onto the GeneralizedStiefel M, i.e. compute q as the polar decomposition of $p$ such that $q^{\mathrm{H}}Bq$ is the identity, where $\cdot^{\mathrm{H}}$ denotes the hermitian, i.e. complex conjugate transposed.

    source
    ManifoldsBase.retractMethod
    retract(M::GeneralizedStiefel, p, X)
    +retract(M::GeneralizedStiefel, p, X, ::PolarRetraction)
    +retract(M::GeneralizedStiefel, p, X, ::ProjectionRetraction)

    Compute the SVD-based retraction PolarRetraction on the GeneralizedStiefel manifold M, which in this case is the same as the projection based retraction employing the exponential map in the embedding and projecting the result back to the manifold.

    The default retraction for this manifold is the ProjectionRetraction.

    source
    diff --git a/v0.8.79/manifolds/generalunitary.html b/v0.8.79/manifolds/generalunitary.html new file mode 100644 index 0000000000..018c637022 --- /dev/null +++ b/v0.8.79/manifolds/generalunitary.html @@ -0,0 +1,44 @@ + +Orthogonal and Unitary Matrices · Manifolds.jl

    Orthogonal and Unitary matrices

    Both OrthogonalMatrices and UnitaryMatrices are quite similar, as are Rotations, as well as unitary matrices with determinant equal to one. So these share a {common implementation}(@ref generalunitarymatrices)

    Orthogonal Matrices

    Manifolds.OrthogonalMatricesType
     OrthogonalMatrices{n} = GeneralUnitaryMatrices{n,ℝ,AbsoluteDeterminantOneMatrices}

    The manifold of (real) orthogonal matrices $\mathrm{O}(n)$.

    OrthogonalMatrices(n)
    source

    Unitary Matrices

    Manifolds.UnitaryMatricesType
    const UnitaryMatrices{n,𝔽} = AbstarctUnitaryMatrices{n,𝔽,AbsoluteDeterminantOneMatrices}

    The manifold $U(n,𝔽)$ of $n×n$ complex matrices (when 𝔽=ℂ) or quaternionic matrices (when 𝔽=ℍ) such that

    $p^{\mathrm{H}}p = \mathrm{I}_n,$

    where $\mathrm{I}_n$ is the $n×n$ identity matrix. Such matrices p have a property that $\lVert \det(p) \rVert = 1$.

    The tangent spaces are given by

    \[ T_pU(n) \coloneqq \bigl\{ + X \big| pY \text{ where } Y \text{ is skew symmetric, i. e. } Y = -Y^{\mathrm{H}} + \bigr\}\]

    But note that tangent vectors are represented in the Lie algebra, i.e. just using $Y$ in the representation above.

    Constructor

    UnitaryMatrices(n, 𝔽::AbstractNumbers=ℂ)

    see also OrthogonalMatrices for the real valued case.

    source
    ManifoldDiff.riemannian_HessianMethod
    riemannian_Hessian(M::UnitaryMatrices, p, G, H, X)

    The Riemannian Hessian can be computed by adopting Eq. (5.6) [Ngu23], so very similar to the complex Stiefel manifold. The only difference is, that here the tangent vectors are stored in the Lie algebra, i.e. the update direction is actually $pX$ instead of just $X$ (in Stiefel). and that means the inverse has to be appliead to the (Euclidean) Hessian to map it into the Lie algebra.

    source
    ManifoldsBase.WeingartenMethod
    Weingarten(M::UnitaryMatrices, p, X, V)

    Compute the Weingarten map $\mathcal W_p$ at p on the Stiefel M with respect to the tangent vector $X \in T_p\mathcal M$ and the normal vector $V \in N_p\mathcal M$.

    The formula is due to [AMT13] given by

    \[\mathcal W_p(X,V) = -\frac{1}{2}p\bigl(V^{\mathrm{H}}X - X^\mathrm{H}V\bigr)\]

    source

    Common functions

    Manifolds.AbsoluteDeterminantOneMatricesType
    AbsoluteDeterminantOneMatrices <: AbstractMatrixType

    A type to indicate that we require (orthogonal / unitary) matrices with normed determinant, i.e. that the absolute value of the determinant is 1.

    source
    Manifolds.GeneralUnitaryMatricesType
    GeneralUnitaryMatrices{n,𝔽,S<:AbstractMatrixType} <: AbstractDecoratorManifold

    A common parametric type for matrices with a unitary property of size $n×n$ over the field $\mathbb F$ which additionally have the AbstractMatrixType, e.g. are DeterminantOneMatrices.

    source
    Base.expMethod
    exp(M::Rotations, p, X)
    +exp(M::OrthogonalMatrices, p, X)
    +exp(M::UnitaryMatrices, p, X)

    Compute the exponential map, that is, since $X$ is represented in the Lie algebra,

    exp_p(X) = p\mathrm{e}^X

    For different sizes, like $n=2,3,4$ there is specialised implementations

    The algorithm used is a more numerically stable form of those proposed in [GX02] and [AR13].

    source
    Base.logMethod
    log(M::Rotations, p, X)
    +log(M::OrthogonalMatrices, p, X)
    +log(M::UnitaryMatrices, p, X)

    Compute the logarithmic map, that is, since the resulting $X$ is represented in the Lie algebra,

    log_p q = \log(p^{\mathrm{H}q)

    which is projected onto the skew symmetric matrices for numerical stability.

    source
    Base.logMethod
    log(M::Rotations, p, q)

    Compute the logarithmic map on the Rotations manifold M which is given by

    \[\log_p q = \operatorname{log}(p^{\mathrm{T}}q)\]

    where $\operatorname{Log}$ denotes the matrix logarithm. For numerical stability, the result is projected onto the set of skew symmetric matrices.

    For antipodal rotations the function returns deterministically one of the tangent vectors that point at q.

    source
    Manifolds.cos_angles_4d_rotation_matrixMethod
    cos_angles_4d_rotation_matrix(R)

    4D rotations can be described by two orthogonal planes that are unchanged by the action of the rotation (vectors within a plane rotate only within the plane). The cosines of the two angles $α,β$ of rotation about these planes may be obtained from the distinct real parts of the eigenvalues of the rotation matrix. This function computes these more efficiently by solving the system

    \[\begin{aligned} +\cos α + \cos β &= \frac{1}{2} \operatorname{tr}(R)\\ +\cos α \cos β &= \frac{1}{8} \operatorname{tr}(R)^2 + - \frac{1}{16} \operatorname{tr}((R - R^T)^2) - 1. +\end{aligned}\]

    By convention, the returned values are sorted in decreasing order. See also angles_4d_skew_sym_matrix.

    source
    Manifolds.manifold_volumeMethod
    manifold_volume(::GeneralUnitaryMatrices{n,ℂ,DeterminantOneMatrices}) where {n}

    Volume of the manifold of complex general unitary matrices of determinant one. The formula reads [BST03]

    \[\sqrt{n 2^{n-1}} π^{(n-1)(n+2)/2} \prod_{k=1}^{n-1}\frac{1}{k!}\]

    source
    Manifolds.manifold_volumeMethod
    manifold_volume(::GeneralUnitaryMatrices{n,ℝ,AbsoluteDeterminantOneMatrices}) where {n}

    Volume of the manifold of real orthogonal matrices of absolute determinant one. The formula reads [BST03]:

    \[\begin{cases} +\frac{2^{k}(2\pi)^{k^2}}{\prod_{s=1}^{k-1} (2s)!} & \text{ if } n = 2k \\ +\frac{2^{k+1}(2\pi)^{k(k+1)}}{\prod_{s=1}^{k-1} (2s+1)!} & \text{ if } n = 2k+1 +\end{cases}\]

    source
    Manifolds.manifold_volumeMethod
    manifold_volume(::GeneralUnitaryMatrices{n,ℝ,DeterminantOneMatrices}) where {n}

    Volume of the manifold of real orthogonal matrices of determinant one. The formula reads [BST03]:

    \[\begin{cases} +2 & \text{ if } n = 0 \\ +\frac{2^{k-1/2}(2\pi)^{k^2}}{\prod_{s=1}^{k-1} (2s)!} & \text{ if } n = 2k+2 \\ +\frac{2^{k+1/2}(2\pi)^{k(k+1)}}{\prod_{s=1}^{k-1} (2s+1)!} & \text{ if } n = 2k+1 +\end{cases}\]

    It differs from the paper by a factor of sqrt(2) due to a different choice of normalization.

    source
    Manifolds.manifold_volumeMethod
    manifold_volume(::GeneralUnitaryMatrices{n,ℂ,AbsoluteDeterminantOneMatrices}) where {n}

    Volume of the manifold of complex general unitary matrices of absolute determinant one. The formula reads [BST03]

    \[\sqrt{n 2^{n+1}} π^{n(n+1)/2} \prod_{k=1}^{n-1}\frac{1}{k!}\]

    source
    Manifolds.volume_densityMethod
    volume_density(M::GeneralUnitaryMatrices{3,ℝ}, p, X)

    Compute the volume density on O(3)/SO(3). The formula reads [FdHDF19]

    \[\frac{1-1\cos(\sqrt{2}\lVert X \rVert)}{\lVert X \rVert^2}.\]

    source
    Manifolds.volume_densityMethod
    volume_density(M::GeneralUnitaryMatrices{n,ℝ}, p, X) where {n}

    Compute volume density function of a sphere, i.e. determinant of the differential of exponential map exp(M, p, X). It is derived from Eq. (4.1) and Corollary 4.4 in [CLLD22]. See also Theorem 4.1 in [FdHDF19], (note that it uses a different convention).

    source
    ManifoldsBase.check_pointMethod
    check_point(M::Rotations, p; kwargs...)

    Check whether p is a valid point on the UnitaryMatrices M, i.e. that $p$ has an determinante of absolute value one, i.e. that $p^{\mathrm{H}}p$

    The tolerance for the last test can be set using the kwargs....

    source
    ManifoldsBase.check_pointMethod
    check_point(M::UnitaryMatrices, p; kwargs...)
    +check_point(M::OrthogonalMatrices, p; kwargs...)
    +check_point(M::GeneralUnitaryMatrices{n,𝔽}, p; kwargs...)

    Check whether p is a valid point on the UnitaryMatrices or [OrthogonalMatrices] M, i.e. that $p$ has an determinante of absolute value one

    The tolerance for the last test can be set using the kwargs....

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::UnitaryMatrices{n}, p, X; kwargs... )
    +check_vector(M::OrthogonalMatrices{n}, p, X; kwargs... )
    +check_vector(M::Rotations{n}, p, X; kwargs... )
    +check_vector(M::GeneralUnitaryMatrices{n,𝔽}, p, X; kwargs... )

    Check whether X is a tangent vector to p on the UnitaryMatrices space M, i.e. after check_point(M,p), X has to be skew symmetric (Hermitian) and orthogonal to p.

    The tolerance for the last test can be set using the kwargs....

    source
    ManifoldsBase.embedMethod
    embed(M::GeneralUnitaryMatrices{n,𝔽}, p, X)

    Embed the tangent vector X at point p in M from its Lie algebra representation (set of skew matrices) into the Riemannian submanifold representation

    The formula reads

    \[X_{\text{embedded}} = p * X\]

    source
    ManifoldsBase.get_coordinatesMethod
    get_coordinates(M::Rotations, p, X)
    +get_coordinates(M::OrthogonalMatrices, p, X)
    +get_coordinates(M::UnitaryMatrices, p, X)

    Extract the unique tangent vector components $X^i$ at point p on Rotations $\mathrm{SO}(n)$ from the matrix representation X of the tangent vector.

    The basis on the Lie algebra $𝔰𝔬(n)$ is chosen such that for $\mathrm{SO}(2)$, $X^1 = θ = X_{21}$ is the angle of rotation, and for $\mathrm{SO}(3)$, $(X^1, X^2, X^3) = (X_{32}, X_{13}, X_{21}) = θ u$ is the angular velocity and axis-angle representation, where $u$ is the unit vector along the axis of rotation.

    For $\mathrm{SO}(n)$ where $n ≥ 4$, the additional elements of $X^i$ are $X^{j (j - 3)/2 + k + 1} = X_{jk}$, for $j ∈ [4,n], k ∈ [1,j)$.

    source
    ManifoldsBase.get_embeddingMethod
    get_embedding(M::OrthogonalMatrices{n})
    +get_embedding(M::Rotations{n})
    +get_embedding(M::UnitaryMatrices{n})

    Return the embedding, i.e. The $\mathbb F^{n×n}$, where $\mathbb F = \mathbb R$ for the first two and $\mathbb F = \mathbb C$ for the unitary matrices.

    source
    ManifoldsBase.get_vectorMethod
    get_vector(M::OrthogonalMatrices, p, Xⁱ, B::DefaultOrthogonalBasis)
    +get_vector(M::Rotations, p, Xⁱ, B::DefaultOrthogonalBasis)

    Convert the unique tangent vector components Xⁱ at point p on Rotations or OrthogonalMatrices to the matrix representation $X$ of the tangent vector. See get_coordinates for the conventions used.

    source
    ManifoldsBase.injectivity_radiusMethod
    injectivity_radius(G::GeneraliUnitaryMatrices)

    Return the injectivity radius for general unitary matrix manifolds, which is[1]

    \[ \operatorname{inj}_{\mathrm{U}(n)} = π.\]

    source
    ManifoldsBase.injectivity_radiusMethod
    injectivity_radius(G::GeneralUnitaryMatrices{n,ℂ,DeterminantOneMatrices})

    Return the injectivity radius for general complex unitary matrix manifolds, where the determinant is $+1$, which is[1]

    \[ \operatorname{inj}_{\mathrm{SU}(n)} = π \sqrt{2}.\]

    source
    ManifoldsBase.injectivity_radiusMethod
    injectivity_radius(G::SpecialOrthogonal)
    +injectivity_radius(G::Orthogonal)
    +injectivity_radius(M::Rotations)
    +injectivity_radius(M::Rotations, ::ExponentialRetraction)

    Return the radius of injectivity on the Rotations manifold M, which is $π\sqrt{2}$. [1]

    source
    ManifoldsBase.manifold_dimensionMethod
    manifold_dimension(M::GeneralUnitaryMatrices{n,ℂ,DeterminantOneMatrices})

    Return the dimension of the manifold of special unitary matrices.

    \[\dim_{\mathrm{SU}(n)} = n^2-1.\]

    source
    ManifoldsBase.manifold_dimensionMethod
    manifold_dimension(M::Rotations)
    +manifold_dimension(M::OrthogonalMatrices)

    Return the dimension of the manifold orthogonal matrices and of the manifold of rotations

    \[\dim_{\mathrm{O}(n)} = \dim_{\mathrm{SO}(n)} = \frac{n(n-1)}{2}.\]

    source
    ManifoldsBase.projectMethod
     project(M::OrthogonalMatrices{n}, p, X)
    + project(M::Rotations{n}, p, X)
    + project(M::UnitaryMatrices{n}, p, X)

    Orthogonally project the tangent vector $X ∈ 𝔽^{n × n}$, $\mathbb F ∈ \{\mathbb R, \mathbb C\}$ to the tangent space of M at p, and change the representer to use the corresponding Lie algebra, i.e. we compute

    \[ \operatorname{proj}_p(X) = \frac{p^{\mathrm{H}} X - (p^{\mathrm{H}} X)^{\mathrm{H}}}{2},\]

    source
    ManifoldsBase.projectMethod
     project(G::UnitaryMatrices{n}, p)
    + project(G::OrthogonalMatrices{n}, p)

    Project the point $p ∈ 𝔽^{n × n}$ to the nearest point in $\mathrm{U}(n,𝔽)=$Unitary(n,𝔽) under the Frobenius norm. If $p = U S V^\mathrm{H}$ is the singular value decomposition of $p$, then the projection is

    \[ \operatorname{proj}_{\mathrm{U}(n,𝔽)} \colon p ↦ U V^\mathrm{H}.\]

    source
    ManifoldsBase.retractMethod
    retract(M::Rotations, p, X, ::PolarRetraction)
    +retract(M::OrthogonalMatrices, p, X, ::PolarRetraction)

    Compute the SVD-based retraction on the Rotations and OrthogonalMatrices M from p in direction X (as an element of the Lie group) and is a second-order approximation of the exponential map. Let

    \[USV = p + pX\]

    be the singular value decomposition, then the formula reads

    \[\operatorname{retr}_p X = UV^\mathrm{T}.\]

    source
    ManifoldsBase.retractMethod
    retract(M::Rotations, p, X, ::QRRetraction)
    +retract(M::OrthogonalMatrices, p. X, ::QRRetraction)

    Compute the QR-based retraction on the Rotations and OrthogonalMatrices M from p in direction X (as an element of the Lie group), which is a first-order approximation of the exponential map.

    This is also the default retraction on these manifolds.

    source

    Footnotes and References

    diff --git a/v0.8.79/manifolds/graph.html b/v0.8.79/manifolds/graph.html new file mode 100644 index 0000000000..33d5c8d861 --- /dev/null +++ b/v0.8.79/manifolds/graph.html @@ -0,0 +1,18 @@ + +Graph manifold · Manifolds.jl

    Graph manifold

    For a given graph $G(V,E)$ implemented using Graphs.jl, the GraphManifold models a PowerManifold either on the nodes or edges of the graph, depending on the GraphManifoldType. i.e., it's either a $\mathcal M^{\lvert V \rvert}$ for the case of a vertex manifold or a $\mathcal M^{\lvert E \rvert}$ for the case of a edge manifold.

    Example

    To make a graph manifold over $ℝ^2$ with three vertices and two edges, one can use

    using Manifolds
    +using Graphs
    +M = Euclidean(2)
    +p = [[1., 4.], [2., 5.], [3., 6.]]
    +q = [[4., 5.], [6., 7.], [8., 9.]]
    +x = [[6., 5.], [4., 3.], [2., 8.]]
    +G = SimpleGraph(3)
    +add_edge!(G, 1, 2)
    +add_edge!(G, 2, 3)
    +N = GraphManifold(G, M, VertexManifold())
    GraphManifold
    +Graph:
    + {3, 2} undirected simple Int64 graph
    +AbstractManifold on vertices:
    + Euclidean(2; field = ℝ)

    It supports all AbstractPowerManifold operations (it is based on NestedPowerRepresentation) and furthermore it is possible to compute a graph logarithm:

    incident_log(N, p)
    3-element Vector{Vector{Float64}}:
    + [1.0, 1.0]
    + [0.0, 0.0]
    + [-1.0, -1.0]

    Types and functions

    Manifolds.incident_logMethod
    incident_log(M::GraphManifold, x)

    Return the tangent vector on the (vertex) GraphManifold, where at each node the sum of the logs to incident nodes is computed. For a SimpleGraph, an egde is interpreted as double edge in the corresponding SimpleDiGraph

    If the internal graph is a SimpleWeightedGraph the weighted sum of the tangent vectors is computed.

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::GraphManifold, p, X; kwargs...)

    Check whether p is a valid point on the GraphManifold, and X it from its tangent space, i.e. its length equals the number of vertices (for VertexManifolds) or the number of edges (for EdgeManifolds) and that each element of X together with its corresponding entry of p passes the check_vector test for the base manifold M.manifold.

    source
    ManifoldsBase.manifold_dimensionMethod
    manifold_dimension(N::GraphManifold{G,𝔽,M,EdgeManifold})

    returns the manifold dimension of the GraphManifold N on the edges of a graph $G=(V,E)$, i.e.

    \[\dim(\mathcal N) = \lvert E \rvert \dim(\mathcal M),\]

    where $\mathcal M$ is the manifold of the data on the edges.

    source
    ManifoldsBase.manifold_dimensionMethod
    manifold_dimension(N::GraphManifold{G,𝔽,M,VertexManifold})

    returns the manifold dimension of the GraphManifold N on the vertices of a graph $G=(V,E)$, i.e.

    \[\dim(\mathcal N) = \lvert V \rvert \dim(\mathcal M),\]

    where $\mathcal M$ is the manifold of the data on the nodes.

    source
    diff --git a/v0.8.79/manifolds/grassmann.html b/v0.8.79/manifolds/grassmann.html new file mode 100644 index 0000000000..8c0301f6fd --- /dev/null +++ b/v0.8.79/manifolds/grassmann.html @@ -0,0 +1,35 @@ + +Grassmann · Manifolds.jl

    Grassmannian manifold

    Manifolds.GrassmannType
    Grassmann{n,k,𝔽} <: AbstractDecoratorManifold{𝔽}

    The Grassmann manifold $\operatorname{Gr}(n,k)$ consists of all subspaces spanned by $k$ linear independent vectors $𝔽^n$, where $𝔽 ∈ \{ℝ, ℂ\}$ is either the real- (or complex-) valued vectors. This yields all $k$-dimensional subspaces of $ℝ^n$ for the real-valued case and all $2k$-dimensional subspaces of $ℂ^n$ for the second.

    The manifold can be represented as

    \[\operatorname{Gr}(n,k) := \bigl\{ \operatorname{span}(p) : p ∈ 𝔽^{n × k}, p^\mathrm{H}p = I_k\},\]

    where $\cdot^{\mathrm{H}}$ denotes the complex conjugate transpose or Hermitian and $I_k$ is the $k × k$ identity matrix. This means, that the columns of $p$ form an unitary basis of the subspace, that is a point on $\operatorname{Gr}(n,k)$, and hence the subspace can actually be represented by a whole equivalence class of representers. Another interpretation is, that

    \[\operatorname{Gr}(n,k) = \operatorname{St}(n,k) / \operatorname{O}(k),\]

    i.e the Grassmann manifold is the quotient of the Stiefel manifold and the orthogonal group $\operatorname{O}(k)$ of orthogonal $k × k$ matrices. Note that it doesn't matter whether we start from the Euclidean or canonical metric on the Stiefel manifold, the resulting quotient metric on Grassmann is the same.

    The tangent space at a point (subspace) $p$ is given by

    \[T_p\mathrm{Gr}(n,k) = \bigl\{ +X ∈ 𝔽^{n × k} : +X^{\mathrm{H}}p + p^{\mathrm{H}}X = 0_{k} \bigr\},\]

    where $0_k$ is the $k × k$ zero matrix.

    Note that a point $p ∈ \operatorname{Gr}(n,k)$ might be represented by different matrices (i.e. matrices with unitary column vectors that span the same subspace). Different representations of $p$ also lead to different representation matrices for the tangent space $T_p\mathrm{Gr}(n,k)$

    For a representation of points as orthogonal projectors. Here

    \[\operatorname{Gr}(n,k) := \bigl\{ p \in \mathbb R^{n×n} : p = p^˜\mathrm{T}, p^2 = p, \operatorname{rank}(p) = k\},\]

    with tangent space

    \[T_p\mathrm{Gr}(n,k) = \bigl\{ +X ∈ \mathbb R^{n × n} : X=X^{\mathrm{T}} \text{ and } X = pX+Xp \bigr\},\]

    see also ProjectorPoint and ProjectorTVector.

    The manifold is named after Hermann G. Graßmann (1809-1877).

    A good overview can be found in[BZA20].

    Constructor

    Grassmann(n,k,field=ℝ)

    Generate the Grassmann manifold $\operatorname{Gr}(n,k)$, where the real-valued case field = ℝ is the default.

    source
    Base.convertMethod
    convert(::Type{ProjectorPoint}, p::AbstractMatrix)

    Convert a point p on Stiefel that also represents a point (i.e. subspace) on Grassmann to a projector representation of said subspace, i.e. compute the canonical_project! for

    \[ π^{\mathrm{SG}}(p) = pp^{\mathrm{T)}.\]

    source
    Base.convertMethod
    convert(::Type{ProjectorPoint}, ::Stiefelpoint)

    Convert a point p on Stiefel that also represents a point (i.e. subspace) on Grassmann to a projector representation of said subspace, i.e. compute the canonical_project! for

    \[ π^{\mathrm{SG}}(p) = pp^{\mathrm{T}}.\]

    source
    ManifoldsBase.change_metricMethod
    change_metric(M::Grassmann, ::EuclideanMetric, p X)

    Change X to the corresponding vector with respect to the metric of the Grassmann M, which is just the identity, since the manifold is isometrically embedded.

    source
    ManifoldsBase.change_representerMethod
    change_representer(M::Grassmann, ::EuclideanMetric, p, X)

    Change X to the corresponding representer of a cotangent vector at p. Since the Grassmann manifold M, is isometrically embedded, this is the identity

    source

    The Grassmanian represented as points on the Stiefel manifold

    Manifolds.StiefelPointType
    StiefelPoint <: AbstractManifoldPoint

    A point on a Stiefel manifold. This point is mainly used for representing points on the Grassmann where this is also the default representation and hence equivalent to using AbstractMatrices thereon. they can also used be used as points on Stiefel.

    source
    Manifolds.StiefelTVectorType
    StiefelTVector <: TVector

    A tangent vector on the Grassmann manifold represented by a tangent vector from the tangent space of a corresponding point from the Stiefel manifold, see StiefelPoint. This is the default representation so is can be used interchangeably with just abstract matrices.

    source
    Base.expMethod
    exp(M::Grassmann, p, X)

    Compute the exponential map on the Grassmann M$= \mathrm{Gr}(n,k)$ starting in p with tangent vector (direction) X. Let $X = USV$ denote the SVD decomposition of $X$. Then the exponential map is written using

    \[z = p V\cos(S)V^\mathrm{H} + U\sin(S)V^\mathrm{H},\]

    where $\cdot^{\mathrm{H}}$ denotes the complex conjugate transposed or Hermitian and the cosine and sine are applied element wise to the diagonal entries of $S$. A final QR decomposition $z=QR$ is performed for numerical stability reasons, yielding the result as

    \[\exp_p X = Q.\]

    source
    Base.logMethod
    log(M::Grassmann, p, q)

    Compute the logarithmic map on the Grassmann M$ = \mathcal M=\mathrm{Gr}(n,k)$, i.e. the tangent vector X whose corresponding geodesic starting from p reaches q after time 1 on M. The formula reads

    \[\log_p q = V\cdot \operatorname{atan}(S) \cdot U^\mathrm{H},\]

    where $\cdot^{\mathrm{H}}$ denotes the complex conjugate transposed or Hermitian. The matrices $U$ and $V$ are the unitary matrices, and $S$ is the diagonal matrix containing the singular values of the SVD-decomposition

    \[USV = (q^\mathrm{H}p)^{-1} ( q^\mathrm{H} - q^\mathrm{H}pp^\mathrm{H}).\]

    In this formula the $\operatorname{atan}$ is meant elementwise.

    source
    Base.randMethod
    rand(M::Grassmann; σ::Real=1.0, vector_at=nothing)

    When vector_at is nothing, return a random point p on Grassmann manifold M by generating a random (Gaussian) matrix with standard deviation σ in matching size, which is orthonormal.

    When vector_at is not nothing, return a (Gaussian) random vector from the tangent space $T_p\mathrm{Gr}(n,k)$ with mean zero and standard deviation σ by projecting a random Matrix onto the tangent space at vector_at.

    source
    ManifoldDiff.riemannian_HessianMethod
    riemannian_Hessian(M::Grassmann, p, G, H, X)

    The Riemannian Hessian can be computed by adopting Eq. (6.6) [Ngu23], where we use for the EuclideanMetric $α_0=α_1=1$ in their formula. Let $\nabla f(p)$ denote the Euclidean gradient G, $\nabla^2 f(p)[X]$ the Euclidean Hessian H. Then the formula reads

    \[ \operatorname{Hess}f(p)[X] + = + \operatorname{proj}_{T_p\mathcal M}\Bigl( + ∇^2f(p)[X] - X p^{\mathrm{H}}∇f(p) + \Bigr).\]

    Compared to Eq. (5.6) also the metric conversion simplifies to the identity.

    source
    Manifolds.uniform_distributionMethod
    uniform_distribution(M::Grassmann{n,k,ℝ}, p)

    Uniform distribution on given (real-valued) Grassmann M. Specifically, this is the normalized Haar measure on M. Generated points will be of similar type as p.

    The implementation is based on Section 2.5.1 in [Chi03]; see also Theorem 2.2.2(iii) in [Chi03].

    source
    ManifoldsBase.distanceMethod
    distance(M::Grassmann, p, q)

    Compute the Riemannian distance on Grassmann manifold M$= \mathrm{Gr}(n,k)$.

    The distance is given by

    \[d_{\mathrm{Gr}(n,k)}(p,q) = \operatorname{norm}(\log_p(q)).\]

    source
    ManifoldsBase.innerMethod
    inner(M::Grassmann, p, X, Y)

    Compute the inner product for two tangent vectors X, Y from the tangent space of p on the Grassmann manifold M. The formula reads

    \[g_p(X,Y) = \operatorname{tr}(X^{\mathrm{H}}Y),\]

    where $\cdot^{\mathrm{H}}$ denotes the complex conjugate transposed or Hermitian.

    source
    ManifoldsBase.inverse_retractMethod
    inverse_retract(M::Grassmann, p, q, ::PolarInverseRetraction)

    Compute the inverse retraction for the PolarRetraction, on the Grassmann manifold M, i.e.,

    \[\operatorname{retr}_p^{-1}q = q*(p^\mathrm{H}q)^{-1} - p,\]

    where $\cdot^{\mathrm{H}}$ denotes the complex conjugate transposed or Hermitian.

    source
    ManifoldsBase.inverse_retractMethod
    inverse_retract(M, p, q, ::QRInverseRetraction)

    Compute the inverse retraction for the QRRetraction, on the Grassmann manifold M, i.e.,

    \[\operatorname{retr}_p^{-1}q = q(p^\mathrm{H}q)^{-1} - p,\]

    where $\cdot^{\mathrm{H}}$ denotes the complex conjugate transposed or Hermitian.

    source
    ManifoldsBase.projectMethod
    project(M::Grassmann, p)

    Project p from the embedding onto the Grassmann M, i.e. compute q as the polar decomposition of $p$ such that $q^{\mathrm{H}}q$ is the identity, where $\cdot^{\mathrm{H}}$ denotes the Hermitian, i.e. complex conjugate transposed.

    source
    ManifoldsBase.projectMethod
    project(M::Grassmann, p, X)

    Project the n-by-k X onto the tangent space of p on the Grassmann M, which is computed by

    \[\operatorname{proj_p}(X) = X - pp^{\mathrm{H}}X,\]

    where $\cdot^{\mathrm{H}}$ denotes the complex conjugate transposed or Hermitian.

    source
    ManifoldsBase.retractMethod
    retract(M::Grassmann, p, X, ::PolarRetraction)

    Compute the SVD-based retraction PolarRetraction on the Grassmann M. With $USV = p + X$ the retraction reads

    \[\operatorname{retr}_p X = UV^\mathrm{H},\]

    where $\cdot^{\mathrm{H}}$ denotes the complex conjugate transposed or Hermitian.

    source
    ManifoldsBase.retractMethod
    retract(M::Grassmann, p, X, ::QRRetraction )

    Compute the QR-based retraction QRRetraction on the Grassmann M. With $QR = p + X$ the retraction reads

    \[\operatorname{retr}_p X = QD,\]

    where D is a $m × n$ matrix with

    \[D = \operatorname{diag}\left( \operatorname{sgn}\left(R_{ii}+\frac{1}{2}\right)_{i=1}^n \right).\]

    source
    ManifoldsBase.riemann_tensorMethod
    riemann_tensor(::Grassmann{n,k,ℝ}, p, X, Y, Z) where {n,k}

    Compute the value of Riemann tensor on the real Grassmann manifold. The formula reads [Ren11] $R(X,Y)Z = (XY^\mathrm{T} - YX^\mathrm{T})Z + Z(Y^\mathrm{T}X - X^\mathrm{T}Y)$.

    source
    ManifoldsBase.vector_transport_toMethod
    vector_transport_to(M::Grassmann,p,X,q,::ProjectionTransport)

    compute the projection based transport on the Grassmann M by interpreting X from the tangent space at p as a point in the embedding and projecting it onto the tangent space at q.

    source
    ManifoldsBase.zero_vectorMethod
    zero_vector(M::Grassmann, p)

    Return the zero tangent vector from the tangent space at p on the Grassmann M, which is given by a zero matrix the same size as p.

    source

    The Grassmannian represented as projectors

    Manifolds.ProjectorPointType
    ProjectorPoint <: AbstractManifoldPoint

    A type to represent points on a manifold Grassmann that are orthogonal projectors, i.e. a matrix $p ∈ \mathbb F^{n,n}$ projecting onto a $k$-dimensional subspace.

    source
    Base.expMethod
    exp(M::Grassmann, p::ProjectorPoint, X::ProjectorTVector)

    Compute the exponential map on the Grassmann as

    \[ \exp_pX = \operatorname{Exp}([X,p])p\operatorname{Exp}(-[X,p]),\]

    where $\operatorname{Exp}$ denotes the matrix exponential and $[A,B] = AB-BA$ denotes the matrix commutator.

    For details, see Proposition 3.2 in [BZA20].

    source
    Manifolds.horizontal_liftMethod
    horizontal_lift(N::Stiefel{n,k}, q, X::ProjectorTVector)

    Compute the horizontal lift of X from the tangent space at $p=π(q)$ on the Grassmann manifold, i.e.

    \[Y = Xq ∈ T_q\mathrm{St}(n,k)\]

    source
    ManifoldsBase.check_pointMethod
    check_point(::Grassmann{n,k}, p::ProjectorPoint; kwargs...)

    Check whether an orthogonal projector is a point from the Grassmann(n,k) manifold, i.e. the ProjectorPoint $p ∈ \mathbb F^{n×n}$, $\mathbb F ∈ \{\mathbb R, \mathbb C\}$ has to fulfill $p^{\mathrm{T}} = p$, $p^2=p$, and `\operatorname{rank} p = k.

    source
    ManifoldsBase.check_vectorMethod
    check_vector(::Grassmann{n,k,𝔽}, p::ProjectorPoint, X::ProjectorTVector; kwargs...) where {n,k,𝔽}

    Check whether the ProjectorTVector X is from the tangent space $T_p\operatorname{Gr}(n,k)$ at the ProjectorPoint p on the Grassmann manifold $\operatorname{Gr}(n,k)$. This means that X has to be symmetric and that

    \[Xp + pX = X\]

    must hold, where the kwargs can be used to check both for symmetrix of $X$` and this equality up to a certain tolerance.

    source
    ManifoldsBase.parallel_transport_directionMethod
    parallel_transport_direction(
    +    M::Grassmann,
    +    p::ProjectorPoint,
    +    X::ProjectorTVector,
    +    d::ProjectorTVector
    +)

    Compute the parallel transport of X from the tangent space at p into direction d, i.e. to $q=\exp_pd$. The formula is given in Proposition 3.5 of [BZA20] as

    \[\mathcal{P}_{q ← p}(X) = \operatorname{Exp}([d,p])X\operatorname{Exp}(-[d,p]),\]

    where $\operatorname{Exp}$ denotes the matrix exponential and $[A,B] = AB-BA$ denotes the matrix commutator.

    source

    Literature

    [BZA20]
    +
    +
    T. Bendokat, R. Zimmermann and P.-A. Absil. A Grassmann Manifold Handbook: Basic Geometry and Computational Aspects, arXiv Preprint (2020), arXiv:2011.13699.
    +
    [Chi03]
    +
    +
    Y. Chikuse. Statistics on Special Manifolds. Springer New York (2003).
    +
    [Ngu23]
    +
    +
    D. Nguyen. Operator-Valued Formulas for Riemannian Gradient and Hessian and Families of Tractable Metrics in Riemannian Optimization. Journal of Optimization Theory and Applications 198, 135–164 (2023), arXiv:2009.10159.
    +
    [Ren11]
    +
    +
    Q. Rentmeesters. A gradient method for geodesic data fitting on some symmetric Riemannian manifolds. In: IEEE Conference on Decision and Control and European Control Conference, 7141–7146 (2011).
    +
    +
    diff --git a/v0.8.79/manifolds/group.html b/v0.8.79/manifolds/group.html new file mode 100644 index 0000000000..3b6a6543b5 --- /dev/null +++ b/v0.8.79/manifolds/group.html @@ -0,0 +1,120 @@ + +Group manifold · Manifolds.jl

    Group manifolds and actions

    Lie groups, groups that are Riemannian manifolds with a smooth binary group operation AbstractGroupOperation, are implemented as AbstractDecoratorManifold and specifying the group operation using the IsGroupManifold or by decorating an existing manifold with a group operation using GroupManifold.

    The common addition and multiplication group operations of AdditionOperation and MultiplicationOperation are provided, though their behavior may be customized for a specific group.

    There are short introductions at the beginning of each subsection. They briefly mention what is available with links to more detailed descriptions.

    Contents

    Groups

    The following operations are available for group manifolds:

    • Identity: an allocation-free representation of the identity element of the group.
    • inv: get the inverse of a given element.
    • compose: compose two given elements of a group.
    • identity_element get the identity element of the group, in the representation used by other points from the group.

    Group manifold

    GroupManifold adds a group structure to the wrapped manifold. It does not affect metric (or connection) structure of the wrapped manifold, however it can to be further wrapped in MetricManifold to get invariant metrics, or in a ConnectionManifold to equip it with a Cartan-Schouten connection.

    Manifolds.AbstractGroupOperationType
    AbstractGroupOperation

    Abstract type for smooth binary operations $∘$ on elements of a Lie group $\mathcal{G}$:

    \[∘ : \mathcal{G} × \mathcal{G} → \mathcal{G}\]

    An operation can be either defined for a specific group manifold over number system 𝔽 or in general, by defining for an operation Op the following methods:

    identity_element!(::AbstractDecoratorManifold, q, q)
    +inv!(::AbstractDecoratorManifold, q, p)
    +_compose!(::AbstractDecoratorManifold, x, p, q)

    Note that a manifold is connected with an operation by wrapping it with a decorator, AbstractDecoratorManifold using the IsGroupManifold to specify the operation. For a concrete case the concrete wrapper GroupManifold can be used.

    source
    Manifolds.ForwardBackwardSwitchType
    struct ForwardBackwardSwitch <: AbstractDirectionSwitchType end

    Switch between forward and backward action, maintaining left/right direction.

    source
    Manifolds.GroupExponentialRetractionType
    GroupExponentialRetraction{D<:ActionDirection} <: AbstractRetractionMethod

    Retraction using the group exponential exp_lie "translated" to any point on the manifold.

    For more details, see retract.

    Constructor

    GroupExponentialRetraction(conv::ActionDirection = LeftForwardAction())
    source
    Manifolds.GroupLogarithmicInverseRetractionType
    GroupLogarithmicInverseRetraction{D<:ActionDirection} <: AbstractInverseRetractionMethod

    Retraction using the group logarithm log_lie "translated" to any point on the manifold.

    For more details, see inverse_retract.

    Constructor

    GroupLogarithmicInverseRetraction(conv::ActionDirection = LeftForwardAction())
    source
    Manifolds.IdentityType
    Identity{O<:AbstractGroupOperation}

    Represent the group identity element $e ∈ \mathcal{G}$ on a Lie group $\mathcal G$ with AbstractGroupOperation of type O.

    Similar to the philosophy that points are agnostic of their group at hand, the identity does not store the group g it belongs to. However it depends on the type of the AbstractGroupOperation used.

    See also identity_element on how to obtain the corresponding AbstractManifoldPoint or array representation.

    Constructors

    Identity(G::AbstractDecoratorManifold{𝔽})
    +Identity(o::O)
    +Identity(::Type{O})

    create the identity of the corresponding subtype O<:AbstractGroupOperation

    source
    Manifolds.IsGroupManifoldType
    IsGroupManifold{O<:AbstractGroupOperation} <: AbstractTrait

    A trait to declare an AbstractManifold as a manifold with group structure with operation of type O.

    Using this trait you can turn a manifold that you implement implictly into a Lie group. If you wish to decorate an existing manifold with one (or different) AbstractGroupActions, see GroupManifold.

    Constructor

    IsGroupManifold(op)
    source
    Manifolds.LeftBackwardActionType
    LeftBackwardAction()

    Left action of a group on a manifold. For an action $α: X × G → X$ it is characterized by

    \[α(α(x, h), g) = α(x, gh)\]

    for all $g, h ∈ G$ and $x ∈ X$.

    Note that a left action may still act from the right side in an expression.

    source
    Manifolds.LeftForwardActionType
    LeftForwardAction()

    Left action of a group on a manifold. For an action $α: G × X → X$ it is characterized by

    \[α(g, α(h, x)) = α(gh, x)\]

    for all $g, h ∈ G$ and $x ∈ X$.

    source
    Manifolds.LeftRightSwitchType
    struct LeftRightSwitch <: AbstractDirectionSwitchType end

    Switch between left and right action, maintaining forward/backward direction.

    source
    Manifolds.RightBackwardActionType
    RightBackwardAction()

    Right action of a group on a manifold. For an action $α: X × G → X$ it is characterized by

    \[α(α(x, h), g) = α(x, hg)\]

    for all $g, h ∈ G$ and $x ∈ X$.

    Note that a right action may still act from the left side in an expression.

    source
    Manifolds.RightForwardActionType
    RightForwardAction()

    Right action of a group on a manifold. For an action $α: G × X → X$ it is characterized by

    \[α(g, α(h, x)) = α(hg, x)\]

    for all $g, h ∈ G$ and $x ∈ X$.

    Note that a right action may still act from the left side in an expression.

    source
    Base.invMethod
    inv(G::AbstractDecoratorManifold, p)

    Inverse $p^{-1} ∈ \mathcal{G}$ of an element $p ∈ \mathcal{G}$, such that $p \circ p^{-1} = p^{-1} \circ p = e ∈ \mathcal{G}$, where $e$ is the Identity element of $\mathcal{G}$.

    source
    Manifolds.adjoint_actionMethod
    adjoint_action(G::AbstractDecoratorManifold, p, X)

    Adjoint action of the element p of the Lie group G on the element X of the corresponding Lie algebra.

    It is defined as the differential of the group authomorphism $Ψ_p(q) = pqp⁻¹$ at the identity of G.

    The formula reads

    \[\operatorname{Ad}_p(X) = dΨ_p(e)[X]\]

    where $e$ is the identity element of G.

    Note that the adjoint representation of a Lie group isn't generally faithful. Notably the adjoint representation of SO(2) is trivial.

    source
    Manifolds.composeMethod
    compose(G::AbstractDecoratorManifold, p, q)

    Compose elements $p,q ∈ \mathcal{G}$ using the group operation $p \circ q$.

    For implementing composition on a new group manifold, please overload _compose instead so that methods with Identity arguments are not ambiguous.

    source
    Manifolds.exp_lieMethod
    exp_lie(G, X)
    +exp_lie!(G, q, X)

    Compute the group exponential of the Lie algebra element X. It is equivalent to the exponential map defined by the CartanSchoutenMinus connection.

    Given an element $X ∈ 𝔤 = T_e \mathcal{G}$, where $e$ is the Identity element of the group $\mathcal{G}$, and $𝔤$ is its Lie algebra, the group exponential is the map

    \[\exp : 𝔤 → \mathcal{G},\]

    such that for $t,s ∈ ℝ$, $γ(t) = \exp (t X)$ defines a one-parameter subgroup with the following properties. Note that one-parameter subgroups are commutative (see [Suh13], section 3.5), even if the Lie group itself is not commutative.

    \[\begin{aligned} +γ(t) &= γ(-t)^{-1}\\ +γ(t + s) &= γ(t) \circ γ(s) = γ(s) \circ γ(t)\\ +γ(0) &= e\\ +\lim_{t → 0} \frac{d}{dt} γ(t) &= X. +\end{aligned}\]

    Note

    In general, the group exponential map is distinct from the Riemannian exponential map exp.

    For example for the MultiplicationOperation and either Number or AbstractMatrix the Lie exponential is the numeric/matrix exponential.

    \[\exp X = \operatorname{Exp} X = \sum_{n=0}^∞ \frac{1}{n!} X^n.\]

    Since this function also depends on the group operation, make sure to implement the corresponding trait version exp_lie(::TraitList{<:IsGroupManifold}, G, X).

    source
    Manifolds.get_vector_lieMethod
    get_vector_lie(G::AbstractDecoratorManifold, a, B::AbstractBasis)

    Reconstruct a tangent vector from the Lie algebra of G from cooordinates a of a basis B. This is similar to calling get_vector at the p=Identity(G).

    source
    Manifolds.identity_elementMethod
    identity_element(G)

    Return a point representation of the Identity on the IsGroupManifold G. By default this representation is the default array or number representation. It should return the corresponding default representation of $e$ as a point on G if points are not represented by arrays.

    source
    Manifolds.inverse_translateMethod
    inverse_translate(G::AbstractDecoratorManifold, p, q, conv::ActionDirection=LeftForwardAction())

    Inverse translate group element $q$ by $p$ with the inverse translation $τ_p^{-1}$ with the specified convention, either left ($L_p^{-1}$) or right ($R_p^{-1}$), defined as

    \[\begin{aligned} +L_p^{-1} &: q ↦ p^{-1} \circ q\\ +R_p^{-1} &: q ↦ q \circ p^{-1}. +\end{aligned}\]

    source
    Manifolds.inverse_translate_diffMethod
    inverse_translate_diff(G::AbstractDecoratorManifold, p, q, X, conv::ActionDirection=LeftForwardAction())

    For group elements $p, q ∈ \mathcal{G}$ and tangent vector $X ∈ T_q \mathcal{G}$, compute the action on $X$ of the differential of the inverse translation $τ_p$ by $p$, with the specified left or right convention. The differential transports vectors:

    \[(\mathrm{d}τ_p^{-1})_q : T_q \mathcal{G} → T_{τ_p^{-1} q} \mathcal{G}\\\]

    source
    Manifolds.lie_bracketMethod
    lie_bracket(G::AbstractDecoratorManifold, X, Y)

    Lie bracket between elements X and Y of the Lie algebra corresponding to the Lie group G, cf. IsGroupManifold.

    This can be used to compute the adjoint representation of a Lie algebra. Note that this representation isn't generally faithful. Notably the adjoint representation of 𝔰𝔬(2) is trivial.

    source
    Manifolds.log_lieMethod
    log_lie(G, q)
    +log_lie!(G, X, q)

    Compute the Lie group logarithm of the Lie group element q. It is equivalent to the logarithmic map defined by the CartanSchoutenMinus connection.

    Given an element $q ∈ \mathcal{G}$, compute the right inverse of the group exponential map exp_lie, that is, the element $\log q = X ∈ 𝔤 = T_e \mathcal{G}$, such that $q = \exp X$

    Note

    In general, the group logarithm map is distinct from the Riemannian logarithm map log.

    For matrix Lie groups this is equal to the (matrix) logarithm:

    \[\log q = \operatorname{Log} q = \sum_{n=1}^∞ \frac{(-1)^{n+1}}{n} (q - e)^n,\]

    where $e$ here is the Identity element, that is, $1$ for numeric $q$ or the identity matrix $I_m$ for matrix $q ∈ ℝ^{m × m}$.

    Since this function also depends on the group operation, make sure to implement either

    • _log_lie(G, q) and _log_lie!(G, X, q) for the points not being the Identity
    • the trait version log_lie(::TraitList{<:IsGroupManifold}, G, e), log_lie(::TraitList{<:IsGroupManifold}, G, X, e) for own implementations of the identity case.
    source
    Manifolds.switch_directionMethod
    switch_direction(::ActionDirection, type::AbstractDirectionSwitchType = SimultaneousSwitch())

    Returns type of action between left and right, forward or backward, or both at the same type, depending on type, which is either of LeftRightSwitch, ForwardBackwardSwitch or SimultaneousSwitch.

    source
    Manifolds.translateMethod
    translate(G::AbstractDecoratorManifold, p, q, conv::ActionDirection=LeftForwardAction()])

    Translate group element $q$ by $p$ with the translation $τ_p$ with the specified convention, either left forward ($L_p$), left backward ($R'_p$), right backward ($R_p$) or right forward ($L'_p$), defined as

    \[\begin{aligned} +L_p &: q ↦ p \circ q\\ +L'_p &: q ↦ p^{-1} \circ q\\ +R_p &: q ↦ q \circ p\\ +R'_p &: q ↦ q \circ p^{-1}. +\end{aligned}\]

    source
    Manifolds.translate_diffMethod
    translate_diff(G::AbstractDecoratorManifold, p, q, X, conv::ActionDirection=LeftForwardAction())

    For group elements $p, q ∈ \mathcal{G}$ and tangent vector $X ∈ T_q \mathcal{G}$, compute the action of the differential of the translation $τ_p$ by $p$ on $X$, with the specified left or right convention. The differential transports vectors:

    \[(\mathrm{d}τ_p)_q : T_q \mathcal{G} → T_{τ_p q} \mathcal{G}\\\]

    source
    ManifoldsBase.hatMethod
    hat(M::AbstractDecoratorManifold{𝔽,O}, ::Identity{O}, Xⁱ) where {𝔽,O<:AbstractGroupOperation}

    Given a basis $e_i$ on the tangent space at a the Identity and tangent component vector $X^i$, compute the equivalent vector representation ``X=X^i e_i**, where Einstein summation notation is used:

    \[∧ : X^i ↦ X^i e_i\]

    For array manifolds, this converts a vector representation of the tangent vector to an array representation. The vee map is the hat map's inverse.

    source
    ManifoldsBase.inverse_retractMethod
    inverse_retract(
    +    G::AbstractDecoratorManifold,
    +    p,
    +    X,
    +    method::GroupLogarithmicInverseRetraction{<:ActionDirection},
    +)

    Compute the inverse retraction using the group logarithm log_lie "translated" to any point on the manifold. With a group translation (translate) $τ_p$ in a specified direction, the retraction is

    \[\operatorname{retr}_p^{-1} = (\mathrm{d}τ_p)_e \circ \log \circ τ_p^{-1},\]

    where $\log$ is the group logarithm (log_lie), and $(\mathrm{d}τ_p)_e$ is the action of the differential of translation $τ_p$ evaluated at the identity element $e$ (see translate_diff).

    source
    ManifoldsBase.retractMethod
    retract(
    +    G::AbstractDecoratorManifold,
    +    p,
    +    X,
    +    method::GroupExponentialRetraction{<:ActionDirection},
    +)

    Compute the retraction using the group exponential exp_lie "translated" to any point on the manifold. With a group translation (translate) $τ_p$ in a specified direction, the retraction is

    \[\operatorname{retr}_p = τ_p \circ \exp \circ (\mathrm{d}τ_p^{-1})_p,\]

    where $\exp$ is the group exponential (exp_lie), and $(\mathrm{d}τ_p^{-1})_p$ is the action of the differential of inverse translation $τ_p^{-1}$ evaluated at $p$ (see inverse_translate_diff).

    source
    ManifoldsBase.veeMethod
    vee(M::AbstractManifold, p, X)

    Given a basis $e_i$ on the tangent space at a point p and tangent vector X, compute the vector components $X^i$, such that $X = X^i e_i$, where Einstein summation notation is used:

    \[\vee : X^i e_i ↦ X^i\]

    For array manifolds, this converts an array representation of the tangent vector to a vector representation. The hat map is the vee map's inverse.

    source

    GroupManifold

    As a concrete wrapper for manifolds (e.g. when the manifold per se is a group manifold but another group structure should be implemented), there is the GroupManifold

    Manifolds.GroupManifoldType
    GroupManifold{𝔽,M<:AbstractManifold{𝔽},O<:AbstractGroupOperation} <: AbstractDecoratorManifold{𝔽}

    Decorator for a smooth manifold that equips the manifold with a group operation, thus making it a Lie group. See IsGroupManifold for more details.

    Group manifolds by default forward metric-related operations to the wrapped manifold.

    Constructor

    GroupManifold(manifold, op)
    source

    Generic Operations

    For groups based on an addition operation or a group operation, several default implementations are provided.

    Addition Operation

    Multiplication Operation

    Circle group

    General linear group

    Manifolds.GeneralLinearType
    GeneralLinear{n,𝔽} <:
    +    AbstractDecoratorManifold{𝔽}

    The general linear group, that is, the group of all invertible matrices in $𝔽^{n×n}$.

    The default metric is the left-$\mathrm{GL}(n)$-right-$\mathrm{O}(n)$-invariant metric whose inner product is

    \[⟨X_p,Y_p⟩_p = ⟨p^{-1}X_p,p^{-1}Y_p⟩_\mathrm{F} = ⟨X_e, Y_e⟩_\mathrm{F},\]

    where $X_p, Y_p ∈ T_p \mathrm{GL}(n, 𝔽)$, $X_e = p^{-1}X_p ∈ 𝔤𝔩(n) = T_e \mathrm{GL}(n, 𝔽) = 𝔽^{n×n}$ is the corresponding vector in the Lie algebra, and $⟨⋅,⋅⟩_\mathrm{F}$ denotes the Frobenius inner product.

    By default, tangent vectors $X_p$ are represented with their corresponding Lie algebra vectors $X_e = p^{-1}X_p$.

    source
    Base.expMethod
    exp(G::GeneralLinear, p, X)

    Compute the exponential map on the GeneralLinear group.

    The exponential map is

    \[\exp_p \colon X ↦ p \operatorname{Exp}(X^\mathrm{H}) \operatorname{Exp}(X - X^\mathrm{H}),\]

    where $\operatorname{Exp}(⋅)$ denotes the matrix exponential, and $⋅^\mathrm{H}$ is the conjugate transpose [ALRV14] [NM16].

    source
    Base.logMethod
    log(G::GeneralLinear, p, q)

    Compute the logarithmic map on the GeneralLinear(n) group.

    The algorithm proceeds in two stages. First, the point $r = p^{-1} q$ is projected to the nearest element (under the Frobenius norm) of the direct product subgroup $\mathrm{O}(n) × S^+$, whose logarithmic map is exactly computed using the matrix logarithm. This initial tangent vector is then refined using the NLSolveInverseRetraction.

    For GeneralLinear(n, ℂ), the logarithmic map is instead computed on the realified supergroup GeneralLinear(2n) and the resulting tangent vector is then complexified.

    Note that this implementation is experimental.

    source
    Base.randMethod
    Random.rand(G::GeneralLinear; vector_at=nothing, kwargs...)

    If vector_at is nothing, return a random point on the GeneralLinear group G by using rand in the embedding.

    If vector_at is not nothing, return a random tangent vector from the tangent space of the point vector_at on the GeneralLinear by using by using rand in the embedding.

    source

    Heisenberg group

    Manifolds.HeisenbergGroupType
    HeisenbergGroup{n} <: AbstractDecoratorManifold{ℝ}

    Heisenberg group HeisenbergGroup(n) is the group of $(n+2) × (n+2)$ matrices [BP08]

    \[\begin{bmatrix} 1 & \mathbf{a} & c \\ +\mathbf{0} & I_n & \mathbf{b} \\ +0 & \mathbf{0} & 1 \end{bmatrix}\]

    where $I_n$ is the $n×n$ unit matrix, $\mathbf{a}$ is a row vector of length $n$, $\mathbf{b}$ is a column vector of length $n$ and $c$ is a real number. The group operation is matrix multiplication.

    The left-invariant metric on the manifold is used.

    source
    Base.expMethod
    exp(M::HeisenbergGroup, p, X)

    Exponential map on the HeisenbergGroup M with the left-invariant metric. The expression reads

    \[\exp_{\begin{bmatrix} 1 & \mathbf{a}_p & c_p \\ +\mathbf{0} & I_n & \mathbf{b}_p \\ +0 & \mathbf{0} & 1 \end{bmatrix}}\left(\begin{bmatrix} 0 & \mathbf{a}_X & c_X \\ +\mathbf{0} & 0_n & \mathbf{b}_X \\ +0 & \mathbf{0} & 0 \end{bmatrix}\right) = +\begin{bmatrix} 1 & \mathbf{a}_p + \mathbf{a}_X & c_p + c_X + \mathbf{a}_X⋅\mathbf{b}_X/2 + \mathbf{a}_p⋅\mathbf{b}_X \\ +\mathbf{0} & I_n & \mathbf{b}_p + \mathbf{b}_X \\ +0 & \mathbf{0} & 1 \end{bmatrix}\]

    where $I_n$ is the $n×n$ identity matrix, $0_n$ is the $n×n$ zero matrix and $\mathbf{a}⋅\mathbf{b}$ is dot product of vectors.

    source
    Base.logMethod
    log(G::HeisenbergGroup, p, q)

    Compute the logarithmic map on the HeisenbergGroup group. The formula reads

    \[\log_{\begin{bmatrix} 1 & \mathbf{a}_p & c_p \\ +\mathbf{0} & I_n & \mathbf{b}_p \\ +0 & \mathbf{0} & 1 \end{bmatrix}}\left(\begin{bmatrix} 1 & \mathbf{a}_q & c_q \\ +\mathbf{0} & I_n & \mathbf{b}_q \\ +0 & \mathbf{0} & 1 \end{bmatrix}\right) = +\begin{bmatrix} 0 & \mathbf{a}_q - \mathbf{a}_p & c_q - c_p + \mathbf{a}_p⋅\mathbf{b}_p - \mathbf{a}_q⋅\mathbf{b}_q - (\mathbf{a}_q - \mathbf{a}_p)⋅(\mathbf{b}_q - \mathbf{b}_p) / 2 \\ +\mathbf{0} & 0_n & \mathbf{b}_q - \mathbf{b}_p \\ +0 & \mathbf{0} & 0 \end{bmatrix}\]

    where $I_n$ is the $n×n$ identity matrix, $0_n$ is the $n×n$ zero matrix and $\mathbf{a}⋅\mathbf{b}$ is dot product of vectors.

    source
    Base.randMethod
    Random.rand(M::HeisenbergGroup; vector_at = nothing, σ::Real=1.0)

    If vector_at is nothing, return a random point on the HeisenbergGroup M by sampling elements of the first row and the last column from the normal distribution with mean 0 and standard deviation σ.

    If vector_at is not nothing, return a random tangent vector from the tangent space of the point vector_at on the HeisenbergGroup by using a normal distribution with mean 0 and standard deviation σ.

    source
    Manifolds.exp_lieMethod
    exp_lie(M::HeisenbergGroup, X)

    Lie group exponential for the HeisenbergGroup M of the vector X. The formula reads

    \[\exp\left(\begin{bmatrix} 0 & \mathbf{a} & c \\ +\mathbf{0} & 0_n & \mathbf{b} \\ +0 & \mathbf{0} & 0 \end{bmatrix}\right) = \begin{bmatrix} 1 & \mathbf{a} & c + \mathbf{a}⋅\mathbf{b}/2 \\ +\mathbf{0} & I_n & \mathbf{b} \\ +0 & \mathbf{0} & 1 \end{bmatrix}\]

    where $I_n$ is the $n×n$ identity matrix, $0_n$ is the $n×n$ zero matrix and $\mathbf{a}⋅\mathbf{b}$ is dot product of vectors.

    source
    Manifolds.log_lieMethod
    log_lie(M::HeisenbergGroup, p)

    Lie group logarithm for the HeisenbergGroup M of the point p. The formula reads

    \[\log\left(\begin{bmatrix} 1 & \mathbf{a} & c \\ +\mathbf{0} & I_n & \mathbf{b} \\ +0 & \mathbf{0} & 1 \end{bmatrix}\right) = +\begin{bmatrix} 0 & \mathbf{a} & c - \mathbf{a}⋅\mathbf{b}/2 \\ +\mathbf{0} & 0_n & \mathbf{b} \\ +0 & \mathbf{0} & 0 \end{bmatrix}\]

    where $I_n$ is the $n×n$ identity matrix, $0_n$ is the $n×n$ zero matrix and $\mathbf{a}⋅\mathbf{b}$ is dot product of vectors.

    source
    ManifoldsBase.get_coordinatesMethod
    get_coordinates(M::HeisenbergGroup, p, X, ::DefaultOrthonormalBasis{ℝ,TangentSpaceType})

    Get coordinates of tangent vector X at point p from the HeisenbergGroup M. Given a matrix

    \[\begin{bmatrix} 1 & \mathbf{a} & c \\ +\mathbf{0} & I_n & \mathbf{b} \\ +0 & \mathbf{0} & 1 \end{bmatrix}\]

    the coordinates are concatenated vectors $\mathbf{a}$, $\mathbf{b}$, and number $c$.

    source
    ManifoldsBase.get_vectorMethod
    get_vector(M::HeisenbergGroup, p, Xⁱ, ::DefaultOrthonormalBasis{ℝ,TangentSpaceType})

    Get tangent vector with coordinates Xⁱ at point p from the HeisenbergGroup M. Given a vector of coordinates $\begin{bmatrix}\mathbb{a} & \mathbb{b} & c\end{bmatrix}$ the tangent vector is equal to

    \[\begin{bmatrix} 1 & \mathbf{a} & c \\ +\mathbf{0} & I_n & \mathbf{b} \\ +0 & \mathbf{0} & 1 \end{bmatrix}\]

    source
    ManifoldsBase.projectMethod
    project(M::HeisenbergGroup{n}, p, X)

    Project a matrix X in the Euclidean embedding onto the Lie algebra of HeisenbergGroup M. Sets the diagonal elements to 0 and all non-diagonal elements except the first row and the last column to 0.

    source
    ManifoldsBase.projectMethod
    project(M::HeisenbergGroup{n}, p)

    Project a matrix p in the Euclidean embedding onto the HeisenbergGroup M. Sets the diagonal elements to 1 and all non-diagonal elements except the first row and the last column to 0.

    source

    (Special) Orthogonal and (Special) Unitary group

    Since the orthogonal, unitary and special orthogonal and special unitary groups share many common functions, these are also implemented on a common level.

    Common functions

    Manifolds.exp_lieMethod
     exp_lie(G::Orthogonal{2}, X)
    + exp_lie(G::SpecialOrthogonal{2}, X)

    Compute the Lie group exponential map on the Orthogonal(2) or SpecialOrthogonal(2) group. Given $X = \begin{pmatrix} 0 & -θ \\ θ & 0 \end{pmatrix}$, the group exponential is

    \[\exp_e \colon X ↦ \begin{pmatrix} \cos θ & -\sin θ \\ \sin θ & \cos θ \end{pmatrix}.\]

    source

    Orthogonal group

    Special orthogonal group

    Manifolds.SpecialOrthogonalType
    SpecialOrthogonal{n} <: GroupManifold{ℝ,Rotations{n},MultiplicationOperation}

    Special orthogonal group $\mathrm{SO}(n)$ represented by rotation matrices, see Rotations.

    Constructor

    SpecialOrthogonal(n)
    source

    Special unitary group

    Manifolds.SpecialUnitaryType
    SpecialUnitary{n} = GeneralUnitaryMultiplicationGroup{n,ℝ,GeneralUnitaryMatrices{n,ℂ,DeterminantOneMatrices}}

    The special unitary group $\mathrm{SU}(n)$ represented by unitary matrices of determinant +1.

    The tangent spaces are of the form

    \[T_p\mathrm{SU}(x) = \bigl\{ X \in \mathbb C^{n×n} \big| X = pY \text{ where } Y = -Y^{\mathrm{H}} \bigr\}\]

    and we represent tangent vectors by just storing the SkewHermitianMatrices $Y$, or in other words we represent the tangent spaces employing the Lie algebra $\mathfrak{su}(n)$.

    Constructor

    SpecialUnitary(n)

    Generate the Lie group of $n×n$ unitary matrices with determinant +1.

    source
    ManifoldsBase.projectMethod
    project(G::SpecialUnitary, p)

    Project p to the nearest point on the SpecialUnitary group G.

    Given the singular value decomposition $p = U S V^\mathrm{H}$, with the singular values sorted in descending order, the projection is

    \[\operatorname{proj}_{\mathrm{SU}(n)}(p) = +U\operatorname{diag}\left[1,1,…,\det(U V^\mathrm{H})\right] V^\mathrm{H}.\]

    The diagonal matrix ensures that the determinant of the result is $+1$.

    source

    Unitary group

    Manifolds.UnitaryType
     Unitary{n,𝔽} = GeneralUnitaryMultiplicationGroup{n,𝔽,AbsoluteDeterminantOneMatrices}

    The group of unitary matrices $\mathrm{U}(n, 𝔽)$, either complex (when 𝔽=ℂ) or quaternionic (when 𝔽=ℍ)

    The group consists of all points $p ∈ 𝔽^{n × n}$ where $p^{\mathrm{H}}p = pp^{\mathrm{H}} = I$.

    The tangent spaces are if the form

    \[T_p\mathrm{U}(n) = \bigl\{ X \in 𝔽^{n×n} \big| X = pY \text{ where } Y = -Y^{\mathrm{H}} \bigr\}\]

    and we represent tangent vectors by just storing the SkewHermitianMatrices $Y$, or in other words we represent the tangent spaces employing the Lie algebra $\mathfrak{u}(n, 𝔽)$.

    Quaternionic unitary group is isomorphic to the compact symplectic group of the same dimension.

    Constructor

    Unitary(n, 𝔽::AbstractNumbers=ℂ)

    Construct $\mathrm{U}(n, 𝔽)$. See also Orthogonal(n) for the real-valued case.

    source
    Manifolds.exp_lieMethod
    exp_lie(G::Unitary{2,ℂ}, X)

    Compute the group exponential map on the Unitary(2) group, which is

    \[\exp_e \colon X ↦ e^{\operatorname{tr}(X) / 2} \left(\cos θ I + \frac{\sin θ}{θ} \left(X - \frac{\operatorname{tr}(X)}{2} I\right)\right),\]

    where $θ = \frac{1}{2} \sqrt{4\det(X) - \operatorname{tr}(X)^2}$.

    source

    Power group

    Manifolds.PowerGroupMethod
    PowerGroup{𝔽,T} <: GroupManifold{𝔽,<:AbstractPowerManifold{𝔽,M,RPT},ProductOperation}

    Decorate a power manifold with a ProductOperation.

    Constituent manifold of the power manifold must also have a IsGroupManifold or a decorated instance of one. This type is mostly useful for equipping the direct product of group manifolds with an Identity element.

    Constructor

    PowerGroup(manifold::AbstractPowerManifold)
    source

    Product group

    Manifolds.ProductGroupMethod
    ProductGroup{𝔽,T} <: GroupManifold{𝔽,ProductManifold{T},ProductOperation}

    Decorate a product manifold with a ProductOperation.

    Each submanifold must also have a IsGroupManifold or a decorated instance of one. This type is mostly useful for equipping the direct product of group manifolds with an Identity element.

    Constructor

    ProductGroup(manifold::ProductManifold)
    source

    Semidirect product group

    Manifolds.SemidirectProductGroupMethod
    SemidirectProductGroup(N::GroupManifold, H::GroupManifold, A::AbstractGroupAction)

    A group that is the semidirect product of a normal group $\mathcal{N}$ and a subgroup $\mathcal{H}$, written $\mathcal{G} = \mathcal{N} ⋊_θ \mathcal{H}$, where $θ: \mathcal{H} × \mathcal{N} → \mathcal{N}$ is an automorphism action of $\mathcal{H}$ on $\mathcal{N}$. The group $\mathcal{G}$ has the composition rule

    \[g \circ g' = (n, h) \circ (n', h') = (n \circ θ_h(n'), h \circ h')\]

    and the inverse

    \[g^{-1} = (n, h)^{-1} = (θ_{h^{-1}}(n^{-1}), h^{-1}).\]

    source
    Manifolds.SemidirectProductOperationType
    SemidirectProductOperation(action::AbstractGroupAction)

    Group operation of a semidirect product group. The operation consists of the operation opN on a normal subgroup N, the operation opH on a subgroup H, and an automorphism action of elements of H on N. Only the action is stored.

    source
    Manifolds.translate_diffMethod
    translate_diff(G::SemidirectProductGroup, p, q, X, conX::LeftForwardAction)

    Perform differential of the left translation on the semidirect product group G.

    Since the left translation is defined as (cf. SemidirectProductGroup):

    \[L_{(n', h')} (n, h) = ( L_{n'} θ_{h'}(n), L_{h'} h)\]

    then its differential can be computed as

    \[\mathrm{d}L_{(n', h')}(X_n, X_h) = ( \mathrm{d}L_{n'} (\mathrm{d}θ_{h'}(X_n)), \mathrm{d}L_{h'} X_h).\]

    source

    Special Euclidean group

    Manifolds.SpecialEuclideanType
    SpecialEuclidean(n)

    Special Euclidean group $\mathrm{SE}(n)$, the group of rigid motions.

    $\mathrm{SE}(n)$ is the semidirect product of the TranslationGroup on $ℝ^n$ and SpecialOrthogonal(n)

    \[\mathrm{SE}(n) ≐ \mathrm{T}(n) ⋊_θ \mathrm{SO}(n),\]

    where $θ$ is the canonical action of $\mathrm{SO}(n)$ on $\mathrm{T}(n)$ by vector rotation.

    This constructor is equivalent to calling

    Tn = TranslationGroup(n)
    +SOn = SpecialOrthogonal(n)
    +SemidirectProductGroup(Tn, SOn, RotationAction(Tn, SOn))

    Points on $\mathrm{SE}(n)$ may be represented as points on the underlying product manifold $\mathrm{T}(n) × \mathrm{SO}(n)$. For group-specific functions, they may also be represented as affine matrices with size (n + 1, n + 1) (see affine_matrix), for which the group operation is MultiplicationOperation.

    source
    Manifolds.SpecialEuclideanInGeneralLinearType
    SpecialEuclideanInGeneralLinear

    An explicit isometric and homomorphic embedding of $\mathrm{SE}(n)$ in $\mathrm{GL}(n+1)$ and $𝔰𝔢(n)$ in $𝔤𝔩(n+1)$. Note that this is not a transparently isometric embedding.

    Constructor

    SpecialEuclideanInGeneralLinear(n)
    source
    Manifolds.adjoint_actionMethod
    adjoint_action(::SpecialEuclidean{3}, p, fX::TFVector{<:Any,VeeOrthogonalBasis{ℝ}})

    Adjoint action of the SpecialEuclidean group on the vector with coefficients fX tangent at point p.

    The formula for the coefficients reads $t×(R⋅ω) + R⋅r$ for the translation part and $R⋅ω$ for the rotation part, where t is the translation part of p, R is the rotation matrix part of p, r is the translation part of fX and ω is the rotation part of fX, $×$ is the cross product and $⋅$ is the matrix product.

    source
    Manifolds.affine_matrixMethod
    affine_matrix(G::SpecialEuclidean, p) -> AbstractMatrix

    Represent the point $p ∈ \mathrm{SE}(n)$ as an affine matrix. For $p = (t, R) ∈ \mathrm{SE}(n)$, where $t ∈ \mathrm{T}(n), R ∈ \mathrm{SO}(n)$, the affine representation is the $n + 1 × n + 1$ matrix

    \[\begin{pmatrix} +R & t \\ +0^\mathrm{T} & 1 +\end{pmatrix}.\]

    This function embeds $\mathrm{SE}(n)$ in the general linear group $\mathrm{GL}(n+1)$. It is an isometric embedding and group homomorphism [Ric88].

    See also screw_matrix for matrix representations of the Lie algebra.

    source
    Manifolds.exp_lieMethod
    exp_lie(G::SpecialEuclidean{2}, X)

    Compute the group exponential of $X = (b, Ω) ∈ 𝔰𝔢(2)$, where $b ∈ 𝔱(2)$ and $Ω ∈ 𝔰𝔬(2)$:

    \[\exp X = (t, R) = (U(θ) b, \exp Ω),\]

    where $t ∈ \mathrm{T}(2)$, $R = \exp Ω$ is the group exponential on $\mathrm{SO}(2)$,

    \[U(θ) = \frac{\sin θ}{θ} I_2 + \frac{1 - \cos θ}{θ^2} Ω,\]

    and $θ = \frac{1}{\sqrt{2}} \lVert Ω \rVert_e$ (see norm) is the angle of the rotation.

    source
    Manifolds.exp_lieMethod
    exp_lie(G::SpecialEuclidean{3}, X)

    Compute the group exponential of $X = (b, Ω) ∈ 𝔰𝔢(3)$, where $b ∈ 𝔱(3)$ and $Ω ∈ 𝔰𝔬(3)$:

    \[\exp X = (t, R) = (U(θ) b, \exp Ω),\]

    where $t ∈ \mathrm{T}(3)$, $R = \exp Ω$ is the group exponential on $\mathrm{SO}(3)$,

    \[U(θ) = I_3 + \frac{1 - \cos θ}{θ^2} Ω + \frac{θ - \sin θ}{θ^3} Ω^2,\]

    and $θ = \frac{1}{\sqrt{2}} \lVert Ω \rVert_e$ (see norm) is the angle of the rotation.

    source
    Manifolds.exp_lieMethod
    exp_lie(G::SpecialEuclidean{n}, X)

    Compute the group exponential of $X = (b, Ω) ∈ 𝔰𝔢(n)$, where $b ∈ 𝔱(n)$ and $Ω ∈ 𝔰𝔬(n)$:

    \[\exp X = (t, R),\]

    where $t ∈ \mathrm{T}(n)$ and $R = \exp Ω$ is the group exponential on $\mathrm{SO}(n)$.

    In the screw_matrix representation, the group exponential is the matrix exponential (see exp_lie).

    source
    Manifolds.lie_bracketMethod
    lie_bracket(G::SpecialEuclidean, X::ProductRepr, Y::ProductRepr)
    +lie_bracket(G::SpecialEuclidean, X::ArrayPartition, Y::ArrayPartition)
    +lie_bracket(G::SpecialEuclidean, X::AbstractMatrix, Y::AbstractMatrix)

    Calculate the Lie bracket between elements X and Y of the special Euclidean Lie algebra. For the matrix representation (which can be obtained using screw_matrix) the formula is $[X, Y] = XY-YX$, while in the ProductRepr representation the formula reads $[X, Y] = [(t_1, R_1), (t_2, R_2)] = (R_1 t_2 - R_2 t_1, R_1 R_2 - R_2 R_1)$.

    source
    Manifolds.log_lieMethod
    log_lie(G::SpecialEuclidean{2}, p)

    Compute the group logarithm of $p = (t, R) ∈ \mathrm{SE}(2)$, where $t ∈ \mathrm{T}(2)$ and $R ∈ \mathrm{SO}(2)$:

    \[\log p = (b, Ω) = (U(θ)^{-1} t, \log R),\]

    where $b ∈ 𝔱(2)$, $Ω = \log R ∈ 𝔰𝔬(2)$ is the group logarithm on $\mathrm{SO}(2)$,

    \[U(θ) = \frac{\sin θ}{θ} I_2 + \frac{1 - \cos θ}{θ^2} Ω,\]

    and $θ = \frac{1}{\sqrt{2}} \lVert Ω \rVert_e$ (see norm) is the angle of the rotation.

    source
    Manifolds.log_lieMethod
    log_lie(G::SpecialEuclidean{3}, p)

    Compute the group logarithm of $p = (t, R) ∈ \mathrm{SE}(3)$, where $t ∈ \mathrm{T}(3)$ and $R ∈ \mathrm{SO}(3)$:

    \[\log p = (b, Ω) = (U(θ)^{-1} t, \log R),\]

    where $b ∈ 𝔱(3)$, $Ω = \log R ∈ 𝔰𝔬(3)$ is the group logarithm on $\mathrm{SO}(3)$,

    \[U(θ) = I_3 + \frac{1 - \cos θ}{θ^2} Ω + \frac{θ - \sin θ}{θ^3} Ω^2,\]

    and $θ = \frac{1}{\sqrt{2}} \lVert Ω \rVert_e$ (see norm) is the angle of the rotation.

    source
    Manifolds.log_lieMethod
    log_lie(G::SpecialEuclidean{n}, p) where {n}

    Compute the group logarithm of $p = (t, R) ∈ \mathrm{SE}(n)$, where $t ∈ \mathrm{T}(n)$ and $R ∈ \mathrm{SO}(n)$:

    \[\log p = (b, Ω),\]

    where $b ∈ 𝔱(n)$ and $Ω = \log R ∈ 𝔰𝔬(n)$ is the group logarithm on $\mathrm{SO}(n)$.

    In the affine_matrix representation, the group logarithm is the matrix logarithm (see log_lie):

    source
    Manifolds.screw_matrixMethod
    screw_matrix(G::SpecialEuclidean, X) -> AbstractMatrix

    Represent the Lie algebra element $X ∈ 𝔰𝔢(n) = T_e \mathrm{SE}(n)$ as a screw matrix. For $X = (b, Ω) ∈ 𝔰𝔢(n)$, where $Ω ∈ 𝔰𝔬(n) = T_e \mathrm{SO}(n)$, the screw representation is the $n + 1 × n + 1$ matrix

    \[\begin{pmatrix} +Ω & b \\ +0^\mathrm{T} & 0 +\end{pmatrix}.\]

    This function embeds $𝔰𝔢(n)$ in the general linear Lie algebra $𝔤𝔩(n+1)$ but it's not a homomorphic embedding (see SpecialEuclideanInGeneralLinear for a homomorphic one).

    See also affine_matrix for matrix representations of the Lie group.

    source
    Manifolds.translate_diffMethod
    translate_diff(G::SpecialEuclidean, p, q, X, ::RightBackwardAction)

    Differential of the right action of the SpecialEuclidean group on itself. The formula for the rotation part is the differential of the right rotation action, while the formula for the translation part reads

    \[R_q⋅X_R⋅t_p + X_t\]

    where $R_q$ is the rotation part of q, $X_R$ is the rotation part of X, $t_p$ is the translation part of p and $X_t$ is the translation part of X.

    source
    ManifoldsBase.embedMethod
    embed(M::SpecialEuclideanInGeneralLinear, p, X)

    Embed the tangent vector X at point p on SpecialEuclidean in the GeneralLinear group. Point p can use any representation valid for SpecialEuclidean. The embedding is similar from the one defined by screw_matrix but the translation part is multiplied by inverse of the rotation part.

    source

    Special linear group

    Manifolds.SpecialLinearType
    SpecialLinear{n,𝔽} <: AbstractDecoratorManifold

    The special linear group $\mathrm{SL}(n,𝔽)$ that is, the group of all invertible matrices with unit determinant in $𝔽^{n×n}$.

    The Lie algebra $𝔰𝔩(n, 𝔽) = T_e \mathrm{SL}(n,𝔽)$ is the set of all matrices in $𝔽^{n×n}$ with trace of zero. By default, tangent vectors $X_p ∈ T_p \mathrm{SL}(n,𝔽)$ for $p ∈ \mathrm{SL}(n,𝔽)$ are represented with their corresponding Lie algebra vector $X_e = p^{-1}X_p ∈ 𝔰𝔩(n, 𝔽)$.

    The default metric is the same left-$\mathrm{GL}(n)$-right-$\mathrm{O}(n)$-invariant metric used for GeneralLinear(n, 𝔽). The resulting geodesic on $\mathrm{GL}(n,𝔽)$ emanating from an element of $\mathrm{SL}(n,𝔽)$ in the direction of an element of $𝔰𝔩(n, 𝔽)$ is a closed subgroup of $\mathrm{SL}(n,𝔽)$. As a result, most metric functions forward to GeneralLinear.

    source
    ManifoldsBase.projectMethod
    project(G::SpecialLinear, p, X)

    Orthogonally project $X ∈ 𝔽^{n × n}$ onto the tangent space of $p$ to the SpecialLinear $G = \mathrm{SL}(n, 𝔽)$. The formula reads

    \[\operatorname{proj}_{p} + = (\mathrm{d}L_p)_e ∘ \operatorname{proj}_{𝔰𝔩(n, 𝔽)} ∘ (\mathrm{d}L_p^{-1})_p + \colon X ↦ X - \frac{\operatorname{tr}(X)}{n} I,\]

    where the last expression uses the tangent space representation as the Lie algebra.

    source
    ManifoldsBase.projectMethod
    project(G::SpecialLinear, p)

    Project $p ∈ \mathrm{GL}(n, 𝔽)$ to the SpecialLinear group $G=\mathrm{SL}(n, 𝔽)$.

    Given the singular value decomposition of $p$, written $p = U S V^\mathrm{H}$, the formula for the projection is

    \[\operatorname{proj}_{\mathrm{SL}(n, 𝔽)}(p) = U S D V^\mathrm{H},\]

    where

    \[D_{ij} = δ_{ij} \begin{cases} + 1 & \text{ if } i ≠ n \\ + \det(p)^{-1} & \text{ if } i = n +\end{cases}.\]

    source

    Translation group

    Manifolds.TranslationGroupType
    TranslationGroup{T<:Tuple,𝔽} <: GroupManifold{Euclidean{T,𝔽},AdditionOperation}

    Translation group $\mathrm{T}(n)$ represented by translation arrays.

    Constructor

    TranslationGroup(n₁,...,nᵢ; field = 𝔽)

    Generate the translation group on $𝔽^{n₁,…,nᵢ}$ = Euclidean(n₁,...,nᵢ; field = 𝔽), which is isomorphic to the group itself.

    source

    Group actions

    Group actions represent actions of a given group on a specified manifold. The following operations are available:

    Furthermore, group operation action features the following:

    The following group actions are available:

    Manifolds.adjoint_apply_diff_groupMethod
    adjoint_apply_diff_group(A::AbstractGroupAction, a, X, p)

    Pullback with respect to group element of group action A.

    \[(\mathrm{d}τ^{p,*}) : T_{τ_{a} p} \mathcal M → T_{a} \mathcal G\]

    source
    Manifolds.apply!Method
    apply!(A::AbstractGroupAction, q, a, p)

    Apply action a to the point p with the rule specified by A. The result is saved in q.

    source
    Manifolds.applyMethod
    apply(A::AbstractGroupAction, a, p)

    Apply action a to the point p using map $τ_a$, specified by A. Unless otherwise specified, the right action is defined in terms of the left action:

    \[\mathrm{R}_a = \mathrm{L}_{a^{-1}}\]

    source
    Manifolds.apply_diffMethod
    apply_diff(A::AbstractGroupAction, a, p, X)

    For point $p ∈ \mathcal M$ and tangent vector $X ∈ T_p \mathcal M$, compute the action on $X$ of the differential of the action of $a ∈ \mathcal{G}$, specified by rule A. Written as $(\mathrm{d}τ_a)_p$, with the specified left or right convention, the differential transports vectors

    \[(\mathrm{d}τ_a)_p : T_p \mathcal M → T_{τ_a p} \mathcal M\]

    source
    Manifolds.apply_diff_groupMethod
    apply_diff_group(A::AbstractGroupAction, a, X, p)

    Compute the value of differential of action AbstractGroupAction A on vector X, where element a is acting on p, with respect to the group element.

    Let $\mathcal G$ be the group acting on manifold $\mathcal M$ by the action A. The action is of element $g ∈ \mathcal G$ on a point $p ∈ \mathcal M$. The differential transforms vector X from the tangent space at a ∈ \mathcal G, $X ∈ T_a \mathcal G$ into a tangent space of the manifold $\mathcal M$. When action on element p is written as $\mathrm{d}τ^p$, with the specified left or right convention, the differential transforms vectors

    \[(\mathrm{d}τ^p) : T_{a} \mathcal G → T_{τ_a p} \mathcal M\]

    See also

    apply, apply_diff

    source
    Manifolds.center_of_orbitFunction
    center_of_orbit(
    +    A::AbstractGroupAction,
    +    pts,
    +    p,
    +    mean_method::AbstractEstimationMethod = GradientDescentEstimation(),
    +)

    Calculate an action element $a$ of action A that is the mean element of the orbit of p with respect to given set of points pts. The mean is calculated using the method mean_method.

    The orbit of $p$ with respect to the action of a group $\mathcal{G}$ is the set

    \[O = \{ τ_a p : a ∈ \mathcal{G} \}.\]

    This function is useful for computing means on quotients of manifolds by a Lie group action.

    source
    Manifolds.inverse_apply!Method
    inverse_apply!(A::AbstractGroupAction, q, a, p)

    Apply inverse of action a to the point p with the rule specified by A. The result is saved in q.

    source
    Manifolds.inverse_applyMethod
    inverse_apply(A::AbstractGroupAction, a, p)

    Apply inverse of action a to the point p. The action is specified by A.

    source
    Manifolds.inverse_apply_diffMethod
    inverse_apply_diff(A::AbstractGroupAction, a, p, X)

    For group point $p ∈ \mathcal M$ and tangent vector $X ∈ T_p \mathcal M$, compute the action on $X$ of the differential of the inverse action of $a ∈ \mathcal{G}$, specified by rule A. Written as $(\mathrm{d}τ_a^{-1})_p$, with the specified left or right convention, the differential transports vectors

    \[(\mathrm{d}τ_a^{-1})_p : T_p \mathcal M → T_{τ_a^{-1} p} \mathcal M\]

    source
    Manifolds.optimal_alignment!Method
    optimal_alignment!(A::AbstractGroupAction, x, p, q)

    Calculate an action element of action A that acts upon p to produce the element closest to q. The result is written to x.

    source
    Manifolds.optimal_alignmentMethod
    optimal_alignment(A::AbstractGroupAction, p, q)

    Calculate an action element $a$ of action A that acts upon p to produce the element closest to q in the metric of the G-manifold:

    \[\arg\min_{a ∈ \mathcal{G}} d_{\mathcal M}(τ_a p, q)\]

    where $\mathcal{G}$ is the group that acts on the G-manifold $\mathcal M$.

    source

    Group operation action

    Manifolds.GroupOperationActionType
    GroupOperationAction(group::AbstractDecoratorManifold, AD::ActionDirection = LeftForwardAction())

    Action of a group upon itself via left or right translation.

    source

    Rotation action

    Manifolds.ColumnwiseMultiplicationActionType
    ColumnwiseMultiplicationAction{
    +    TM<:AbstractManifold,
    +    TO<:GeneralUnitaryMultiplicationGroup,
    +    TAD<:ActionDirection,
    +} <: AbstractGroupAction{TAD}

    Action of the (special) unitary or orthogonal group GeneralUnitaryMultiplicationGroup of type On columns of points on a matrix manifold M.

    Constructor

    ColumnwiseMultiplicationAction(
    +    M::AbstractManifold,
    +    On::GeneralUnitaryMultiplicationGroup,
    +    AD::ActionDirection = LeftForwardAction(),
    +)
    source
    Manifolds.RotationActionType
    RotationAction(
    +    M::AbstractManifold,
    +    SOn::SpecialOrthogonal,
    +    AD::ActionDirection = LeftForwardAction(),
    +)

    Space of actions of the SpecialOrthogonal group $\mathrm{SO}(n)$ on a Euclidean-like manifold M of dimension n.

    source
    Manifolds.RowwiseMultiplicationActionType
    RowwiseMultiplicationAction{
    +    TM<:AbstractManifold,
    +    TO<:GeneralUnitaryMultiplicationGroup,
    +    TAD<:ActionDirection,
    +} <: AbstractGroupAction{TAD}

    Action of the (special) unitary or orthogonal group GeneralUnitaryMultiplicationGroup of type On columns of points on a matrix manifold M.

    Constructor

    RowwiseMultiplicationAction(
    +    M::AbstractManifold,
    +    On::GeneralUnitaryMultiplicationGroup,
    +    AD::ActionDirection = LeftForwardAction(),
    +)
    source
    Manifolds.applyMethod
    apply(A::RotationAroundAxisAction, θ, p)

    Rotate point p from Euclidean(3) manifold around axis A.axis by angle θ. The formula reads

    \[p_{rot} = (\cos(θ))p + (k×p) \sin(θ) + k (k⋅p) (1-\cos(θ)),\]

    where $k$ is the vector A.axis and is the dot product.

    source
    Manifolds.optimal_alignmentMethod
    optimal_alignment(A::LeftColumnwiseMultiplicationAction, p, q)

    Compute optimal alignment for the left ColumnwiseMultiplicationAction, i.e. the group element $O^{*}$ that, when it acts on p, returns the point closest to q. Details of computation are described in Section 2.2.1 of [SK16].

    The formula reads

    \[O^{*} = \begin{cases} +UV^T & \text{if } \operatorname{det}(p q^{\mathrm{T}})\\ +U K V^{\mathrm{T}} & \text{otherwise} +\end{cases}\]

    where $U \Sigma V^{\mathrm{T}}$ is the SVD decomposition of $p q^{\mathrm{T}}$ and $K$ is the unit diagonal matrix with the last element on the diagonal replaced with -1.

    source

    Translation action

    Manifolds.TranslationActionType
    TranslationAction(
    +    M::AbstractManifold,
    +    Rn::TranslationGroup,
    +    AD::ActionDirection = LeftForwardAction(),
    +)

    Space of actions of the TranslationGroup $\mathrm{T}(n)$ on a Euclidean-like manifold M.

    The left and right actions are equivalent.

    source

    Metrics on groups

    Lie groups by default typically forward all metric-related operations like exponential or logarithmic map to the underlying manifold, for example SpecialOrthogonal uses methods for Rotations (which is, incidentally, bi-invariant), or SpecialEuclidean uses product metric of the translation and rotation parts (which is not invariant under group operation).

    It is, however, possible to change the metric used by a group by wrapping it in a MetricManifold decorator.

    Invariant metrics

    Manifolds.directionMethod
    direction(::AbstractDecoratorManifold) -> AD

    Get the direction of the action a certain Lie group with its implicit metric has

    source
    Manifolds.has_approx_invariant_metricMethod
    has_approx_invariant_metric(
    +    G::AbstractDecoratorManifold,
    +    p,
    +    X,
    +    Y,
    +    qs::AbstractVector,
    +    conv::ActionDirection = LeftForwardAction();
    +    kwargs...,
    +) -> Bool

    Check whether the metric on the group $\mathcal{G}$ is (approximately) invariant using a set of predefined points. Namely, for $p ∈ \mathcal{G}$, $X,Y ∈ T_p \mathcal{G}$, a metric $g$, and a translation map $τ_q$ in the specified direction, check for each $q ∈ \mathcal{G}$ that the following condition holds:

    \[g_p(X, Y) ≈ g_{τ_q p}((\mathrm{d}τ_q)_p X, (\mathrm{d}τ_q)_p Y).\]

    This is necessary but not sufficient for invariance.

    Optionally, kwargs passed to isapprox may be provided.

    source

    Cartan-Schouten connections

    Manifolds.CartanSchoutenMinusType
    CartanSchoutenMinus

    The unique Cartan-Schouten connection such that all left-invariant vector fields are globally defined by their value at identity. It is biinvariant with respect to the group operation.

    source
    Manifolds.CartanSchoutenPlusType
    CartanSchoutenPlus

    The unique Cartan-Schouten connection such that all right-invariant vector fields are globally defined by their value at identity. It is biinvariant with respect to the group operation.

    source
    Manifolds.CartanSchoutenZeroType
    CartanSchoutenZero

    The unique torsion-free Cartan-Schouten connection. It is biinvariant with respect to the group operation.

    If the metric on the underlying manifold is bi-invariant then it is equivalent to the Levi-Civita connection of that metric.

    source
    Base.expMethod
    exp(M::ConnectionManifold{𝔽,<:AbstractDecoratorManifold{𝔽},<:AbstractCartanSchoutenConnection}, p, X) where {𝔽}

    Compute the exponential map on the ConnectionManifold M with a Cartan-Schouten connection. See Sections 5.3.2 and 5.3.3 of [PL20] for details.

    source
    Base.logMethod
    log(M::ConnectionManifold{𝔽,<:AbstractDecoratorManifold{𝔽},<:AbstractCartanSchoutenConnection}, p, q) where {𝔽}

    Compute the logarithmic map on the ConnectionManifold M with a Cartan-Schouten connection. See Sections 5.3.2 and 5.3.3 of [PL20] for details.

    source
    diff --git a/v0.8.79/manifolds/hyperbolic-1351fb78.svg b/v0.8.79/manifolds/hyperbolic-1351fb78.svg new file mode 100644 index 0000000000..fb49db5f46 --- /dev/null +++ b/v0.8.79/manifolds/hyperbolic-1351fb78.svg @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v0.8.79/manifolds/hyperbolic-24926033.svg b/v0.8.79/manifolds/hyperbolic-24926033.svg new file mode 100644 index 0000000000..1b584baee8 --- /dev/null +++ b/v0.8.79/manifolds/hyperbolic-24926033.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v0.8.79/manifolds/hyperbolic-398c94f2.svg b/v0.8.79/manifolds/hyperbolic-398c94f2.svg new file mode 100644 index 0000000000..cd668f1c4c --- /dev/null +++ b/v0.8.79/manifolds/hyperbolic-398c94f2.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v0.8.79/manifolds/hyperbolic-474d2bfa.svg b/v0.8.79/manifolds/hyperbolic-474d2bfa.svg new file mode 100644 index 0000000000..29123c40f2 --- /dev/null +++ b/v0.8.79/manifolds/hyperbolic-474d2bfa.svg @@ -0,0 +1,1958 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v0.8.79/manifolds/hyperbolic-7cd147e1.svg b/v0.8.79/manifolds/hyperbolic-7cd147e1.svg new file mode 100644 index 0000000000..1847dc4450 --- /dev/null +++ b/v0.8.79/manifolds/hyperbolic-7cd147e1.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v0.8.79/manifolds/hyperbolic-84e7457e.svg b/v0.8.79/manifolds/hyperbolic-84e7457e.svg new file mode 100644 index 0000000000..158234c2c5 --- /dev/null +++ b/v0.8.79/manifolds/hyperbolic-84e7457e.svg @@ -0,0 +1,1969 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v0.8.79/manifolds/hyperbolic-8cac781a.svg b/v0.8.79/manifolds/hyperbolic-8cac781a.svg new file mode 100644 index 0000000000..6070bd0399 --- /dev/null +++ b/v0.8.79/manifolds/hyperbolic-8cac781a.svg @@ -0,0 +1,1946 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v0.8.79/manifolds/hyperbolic-a6072b09.svg b/v0.8.79/manifolds/hyperbolic-a6072b09.svg new file mode 100644 index 0000000000..3429873743 --- /dev/null +++ b/v0.8.79/manifolds/hyperbolic-a6072b09.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v0.8.79/manifolds/hyperbolic-c5aa0be1.svg b/v0.8.79/manifolds/hyperbolic-c5aa0be1.svg new file mode 100644 index 0000000000..62af71c1ab --- /dev/null +++ b/v0.8.79/manifolds/hyperbolic-c5aa0be1.svg @@ -0,0 +1,375 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v0.8.79/manifolds/hyperbolic-c68a7042.svg b/v0.8.79/manifolds/hyperbolic-c68a7042.svg new file mode 100644 index 0000000000..33aa638021 --- /dev/null +++ b/v0.8.79/manifolds/hyperbolic-c68a7042.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v0.8.79/manifolds/hyperbolic-cd62041b.svg b/v0.8.79/manifolds/hyperbolic-cd62041b.svg new file mode 100644 index 0000000000..a0e2a53f45 --- /dev/null +++ b/v0.8.79/manifolds/hyperbolic-cd62041b.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v0.8.79/manifolds/hyperbolic-fa42d76a.svg b/v0.8.79/manifolds/hyperbolic-fa42d76a.svg new file mode 100644 index 0000000000..6c17408226 --- /dev/null +++ b/v0.8.79/manifolds/hyperbolic-fa42d76a.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v0.8.79/manifolds/hyperbolic.html b/v0.8.79/manifolds/hyperbolic.html new file mode 100644 index 0000000000..04ff85d699 --- /dev/null +++ b/v0.8.79/manifolds/hyperbolic.html @@ -0,0 +1,148 @@ + +Hyperbolic space · Manifolds.jl

    Hyperbolic space

    The hyperbolic space can be represented in three different models.

    In the following the common functions are collected.

    A function in this general section uses vectors interpreted as if in the hyperboloid model, and other representations usually just convert to this representation to use these general functions.

    Manifolds.HyperbolicType
    Hyperbolic{N} <: AbstractDecoratorManifold{ℝ}

    The hyperbolic space $\mathcal H^n$ represented by $n+1$-Tuples, i.e. embedded in the Lorentzian manifold equipped with the MinkowskiMetric $⟨\cdot,\cdot⟩_{\mathrm{M}}$. The space is defined as

    \[\mathcal H^n = \Bigl\{p ∈ ℝ^{n+1}\ \Big|\ ⟨p,p⟩_{\mathrm{M}}= -p_{n+1}^2 + + \displaystyle\sum_{k=1}^n p_k^2 = -1, p_{n+1} > 0\Bigr\},.\]

    The tangent space $T_p \mathcal H^n$ is given by

    \[T_p \mathcal H^n := \bigl\{ +X ∈ ℝ^{n+1} : ⟨p,X⟩_{\mathrm{M}} = 0 +\bigr\}.\]

    Note that while the MinkowskiMetric renders the Lorentz manifold (only) pseudo-Riemannian, on the tangent bundle of the Hyperbolic space it induces a Riemannian metric. The corresponding sectional curvature is $-1$.

    If p and X are Vectors of length n+1 they are assumed to be a HyperboloidPoint and a HyperboloidTVector, respectively

    Other models are the Poincaré ball model, see PoincareBallPoint and PoincareBallTVector, respectiely and the Poincaré half space model, see PoincareHalfSpacePoint and PoincareHalfSpaceTVector, respectively.

    Constructor

    Hyperbolic(n)

    Generate the Hyperbolic manifold of dimension n.

    source
    Manifolds.HyperboloidPointType
    HyperboloidPoint <: AbstractManifoldPoint

    In the Hyperboloid model of the Hyperbolic $\mathcal H^n$ points are represented as vectors in $ℝ^{n+1}$ with MinkowskiMetric equal to $-1$.

    This representation is the default, i.e. AbstractVectors are assumed to have this repesentation.

    source
    Manifolds.HyperboloidTVectorType
    HyperboloidTVector <: TVector

    In the Hyperboloid model of the Hyperbolic $\mathcal H^n$ tangent vctors are represented as vectors in $ℝ^{n+1}$ with MinkowskiMetric $⟨p,X⟩_{\mathrm{M}}=0$ to their base point $p$.

    This representation is the default, i.e. vectors are assumed to have this repesentation.

    source
    Base.expMethod
    exp(M::Hyperbolic, p, X)

    Compute the exponential map on the Hyperbolic space $\mathcal H^n$ emanating from p towards X. The formula reads

    \[\exp_p X = \cosh(\sqrt{⟨X,X⟩_{\mathrm{M}}})p ++ \sinh(\sqrt{⟨X,X⟩_{\mathrm{M}}})\frac{X}{\sqrt{⟨X,X⟩_{\mathrm{M}}}},\]

    where $⟨\cdot,\cdot⟩_{\mathrm{M}}$ denotes the MinkowskiMetric on the embedding, the Lorentzian manifold.

    source
    Base.logMethod
    log(M::Hyperbolic, p, q)

    Compute the logarithmic map on the Hyperbolic space $\mathcal H^n$, the tangent vector representing the geodesic starting from p reaches q after time 1. The formula reads for $p ≠ q$

    \[\log_p q = d_{\mathcal H^n}(p,q) +\frac{q-⟨p,q⟩_{\mathrm{M}} p}{\lVert q-⟨p,q⟩_{\mathrm{M}} p \rVert_2},\]

    where $⟨\cdot,\cdot⟩_{\mathrm{M}}$ denotes the MinkowskiMetric on the embedding, the Lorentzian manifold. For $p=q$ the logarihmic map is equal to the zero vector.

    source
    Manifolds.manifold_volumeMethod
    manifold_dimension(M::Hyperbolic)

    Return the volume of the hyperbolic space manifold $\mathcal H^n$, i.e. infinity.

    source
    ManifoldsBase.check_pointMethod
    check_point(M::Hyperbolic, p; kwargs...)

    Check whether p is a valid point on the Hyperbolic M.

    For the HyperboloidPoint or plain vectors this means that, p is a vector of length $n+1$ with inner product in the embedding of -1, see MinkowskiMetric. The tolerance for the last test can be set using the kwargs....

    For the PoincareBallPoint a valid point is a vector $p ∈ ℝ^n$ with a norm stricly less than 1.

    For the PoincareHalfSpacePoint a valid point is a vector from $p ∈ ℝ^n$ with a positive last entry, i.e. $p_n>0$

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::Hyperbolic{n}, p, X; kwargs... )

    Check whether X is a tangent vector to p on the Hyperbolic M, i.e. after check_point(M,p), X has to be of the same dimension as p. The tolerance for the last test can be set using the kwargs....

    For a the hyperboloid model or vectors, X has to be orthogonal to p with respect to the inner product from the embedding, see MinkowskiMetric.

    For a the Poincaré ball as well as the Poincaré half plane model, X has to be a vector from $ℝ^{n}$.

    source
    ManifoldsBase.parallel_transport_toMethod
    parallel_transport_to(M::Hyperbolic, p, X, q)

    Compute the paralllel transport of the X from the tangent space at p on the Hyperbolic space $\mathcal H^n$ to the tangent at q along the geodesic connecting p and q. The formula reads

    \[\mathcal P_{q←p}X = X - \frac{⟨\log_p q,X⟩_p}{d^2_{\mathcal H^n}(p,q)} +\bigl(\log_p q + \log_qp \bigr),\]

    where $⟨\cdot,\cdot⟩_p$ denotes the inner product in the tangent space at p.

    source
    ManifoldsBase.projectMethod
    project(M::Hyperbolic, p, X)

    Perform an orthogonal projection with respect to the Minkowski inner product of X onto the tangent space at p of the Hyperbolic space M.

    The formula reads

    \[Y = X + ⟨p,X⟩_{\mathrm{M}} p,\]

    where $⟨\cdot, \cdot⟩_{\mathrm{M}}$ denotes the MinkowskiMetric on the embedding, the Lorentzian manifold.

    Note

    Projection is only available for the (default) HyperboloidTVector representation, the others don't have such an embedding

    source
    ManifoldsBase.riemann_tensorMethod
    riemann_tensor(M::Hyperbolic{n}, p, X, Y, Z)

    Compute the Riemann tensor $R(X,Y)Z$ at point p on Hyperbolic M. The formula reads (see e.g., [Lee19] Proposition 8.36)

    \[R(X,Y)Z = - (\langle Z, Y \rangle X - \langle Z, X \rangle Y)\]

    source

    hyperboloid model

    Base.convertMethod
    convert(::Type{HyperboloidPoint}, p::PoincareBallPoint)
    +convert(::Type{AbstractVector}, p::PoincareBallPoint)

    convert a point PoincareBallPoint x (from $ℝ^n$) from the Poincaré ball model of the Hyperbolic manifold $\mathcal H^n$ to a HyperboloidPoint $π(p) ∈ ℝ^{n+1}$. The isometry is defined by

    \[π(p) = \frac{1}{1-\lVert p \rVert^2} +\begin{pmatrix}2p_1\\⋮\\2p_n\\1+\lVert p \rVert^2\end{pmatrix}\]

    Note that this is also used, when the type to convert to is a vector.

    source
    Base.convertMethod
    convert(::Type{HyperboloidPoint}, p::PoincareHalfSpacePoint)
    +convert(::Type{AbstractVector}, p::PoincareHalfSpacePoint)

    convert a point PoincareHalfSpacePoint p (from $ℝ^n$) from the Poincaré half plane model of the Hyperbolic manifold $\mathcal H^n$ to a HyperboloidPoint $π(p) ∈ ℝ^{n+1}$.

    This is done in two steps, namely transforming it to a Poincare ball point and from there further on to a Hyperboloid point.

    source
    Base.convertMethod
    convert(::Type{HyperboloidTVector}, p::PoincareBallPoint, X::PoincareBallTVector)
    +convert(::Type{AbstractVector}, p::PoincareBallPoint, X::PoincareBallTVector)

    Convert the PoincareBallTVector X from the tangent space at p to a HyperboloidTVector by computing the push forward of the isometric map, cf. convert(::Type{HyperboloidPoint}, p::PoincareBallPoint).

    The push forward $π_*(p)$ maps from $ℝ^n$ to a subspace of $ℝ^{n+1}$, the formula reads

    \[π_*(p)[X] = \begin{pmatrix} + \frac{2X_1}{1-\lVert p \rVert^2} + \frac{4}{(1-\lVert p \rVert^2)^2}⟨X,p⟩p_1\\ + ⋮\\ + \frac{2X_n}{1-\lVert p \rVert^2} + \frac{4}{(1-\lVert p \rVert^2)^2}⟨X,p⟩p_n\\ + \frac{4}{(1-\lVert p \rVert^2)^2}⟨X,p⟩ +\end{pmatrix}.\]

    source
    Base.convertMethod
    convert(::Type{HyperboloidTVector}, p::PoincareHalfSpacePoint, X::PoincareHalfSpaceTVector)
    +convert(::Type{AbstractVector}, p::PoincareHalfSpacePoint, X::PoincareHalfSpaceTVector)

    convert a point PoincareHalfSpaceTVector X (from $ℝ^n$) at p from the Poincaré half plane model of the Hyperbolic manifold $\mathcal H^n$ to a HyperboloidTVector $π(p) ∈ ℝ^{n+1}$.

    This is done in two steps, namely transforming it to a Poincare ball point and from there further on to a Hyperboloid point.

    source
    Base.convertMethod
    convert(
    +    ::Type{Tuple{HyperboloidPoint,HyperboloidTVector}}.
    +    (p,X)::Tuple{PoincareBallPoint,PoincareBallTVector}
    +)
    +convert(
    +    ::Type{Tuple{P,T}},
    +    (p, X)::Tuple{PoincareBallPoint,PoincareBallTVector},
    +) where {P<:AbstractVector, T <: AbstractVector}

    Convert a PoincareBallPoint p and a PoincareBallTVector X to a HyperboloidPoint and a HyperboloidTVector simultaneously, see convert(::Type{HyperboloidPoint}, ::PoincareBallPoint) and convert(::Type{HyperboloidTVector}, ::PoincareBallPoint, ::PoincareBallTVector) for the formulae.

    source
    Base.convertMethod
    convert(
    +    ::Type{Tuple{HyperboloidPoint,HyperboloidTVector},
    +    (p,X)::Tuple{PoincareHalfSpacePoint, PoincareHalfSpaceTVector}
    +)
    +convert(
    +    ::Type{Tuple{T,T},
    +    (p,X)::Tuple{PoincareHalfSpacePoint, PoincareHalfSpaceTVector}
    +) where {T<:AbstractVector}

    convert a point PoincareHalfSpaceTVector X (from $ℝ^n$) at p from the Poincaré half plane model of the Hyperbolic manifold $\mathcal H^n$ to a tuple of a HyperboloidPoint and a HyperboloidTVector $π(p) ∈ ℝ^{n+1}$ simultaneously.

    This is done in two steps, namely transforming it to the Poincare ball model and from there further on to a Hyperboloid.

    source
    ManifoldDiff.riemannian_HessianMethod
    Y = riemannian_Hessian(M::Hyperbolic, p, G, H, X)
    +riemannian_Hessian!(M::Hyperbolic, Y, p, G, H, X)

    Compute the Riemannian Hessian $\operatorname{Hess} f(p)[X]$ given the Euclidean gradient $∇ f(\tilde p)$ in G and the Euclidean Hessian $∇^2 f(\tilde p)[\tilde X]$ in H, where $\tilde p, \tilde X$ are the representations of $p,X$ in the embedding,.

    Let $\mathbf{g} = \mathbf{g}^{-1} = \operatorname{diag}(1,...,1,-1)$. Then using Remark 4.1 [Ngu23] the formula reads

    \[\operatorname{Hess}f(p)[X] += +\operatorname{proj}_{T_p\mathcal M}\bigl( + \mathbf{g}^{-1}\nabla^2f(p)[X] + X⟨p,\mathbf{g}^{-1}∇f(p)⟩_p +\bigr).\]

    source
    Manifolds.volume_densityMethod
    volume_density(M::Hyperbolic, p, X)

    Compute volume density function of the hyperbolic manifold. The formula reads $(\sinh(\lVert X\rVert)/\lVert X\rVert)^(n-1)$ where n is the dimension of M. It is derived from Eq. (4.1) in[CLLD22].

    source
    ManifoldsBase.change_representerMethod
    change_representer(M::Hyperbolic{n}, ::EuclideanMetric, p, X)

    Change the Eucliden representer X of a cotangent vector at point p. We only have to correct for the metric, which means that the sign of the last entry changes, since for the result $Y$ we are looking for a tangent vector such that

    \[ g_p(Y,Z) = -y_{n+1}z_{n+1} + \sum_{i=1}^n y_iz_i = \sum_{i=1}^{n+1} z_ix_i\]

    holds, which directly yields $y_i=x_i$ for $i=1,\ldots,n$ and $y_{n+1}=-x_{n+1}$.

    source
    ManifoldsBase.distanceMethod
    distance(M::Hyperbolic, p, q)
    +distance(M::Hyperbolic, p::HyperboloidPoint, q::HyperboloidPoint)

    Compute the distance on the Hyperbolic M, which reads

    \[d_{\mathcal H^n}(p,q) = \operatorname{acosh}( - ⟨p, q⟩_{\mathrm{M}}),\]

    where $⟨\cdot,\cdot⟩_{\mathrm{M}}$ denotes the MinkowskiMetric on the embedding, the Lorentzian manifold.

    source
    ManifoldsBase.get_coordinatesMethod
    get_coordinates(M::Hyperbolic, p, X, ::DefaultOrthonormalBasis)

    Compute the coordinates of the vector X with respect to the orthogonalized version of the unit vectors from $ℝ^n$, where $n$ is the manifold dimension of the Hyperbolic M, utting them intop the tangent space at p and orthonormalizing them.

    source
    ManifoldsBase.get_vectorMethod
    get_vector(M::Hyperbolic, p, c, ::DefaultOrthonormalBasis)

    Compute the vector from the coordinates with respect to the orthogonalized version of the unit vectors from $ℝ^n$, where $n$ is the manifold dimension of the Hyperbolic M, utting them intop the tangent space at p and orthonormalizing them.

    source
    ManifoldsBase.innerMethod
    inner(M::Hyperbolic{n}, p, X, Y)
    +inner(M::Hyperbolic{n}, p::HyperboloidPoint, X::HyperboloidTVector, Y::HyperboloidTVector)

    Cmpute the inner product in the Hyperboloid model, i.e. the minkowski_metric in the embedding. The formula reads

    \[g_p(X,Y) = ⟨X,Y⟩_{\mathrm{M}} = -X_{n}Y_{n} + \displaystyle\sum_{k=1}^{n-1} X_kY_k.\]

    This employs the metric of the embedding, see Lorentz space.

    source

    Visualization of the Hyperboloid

    For the case of Hyperbolic(2) there is plotting available based on a PlottingRecipe. You can easily plot points, connecting geodesics as well as tangent vectors.

    Note

    The recipes are only loaded if Plots.jl or RecipesBase.jl is loaded.

    If we consider a set of points, we can first plot these and their connecting geodesics using the geodesic_interpolation for the points. This variable specifies with how many points a geodesic between two successive points is sampled (per default it's -1, which deactivates geodesics) and the line style is set to be a path.

    In general you can plot the surface of the hyperboloid either as wireframe (wireframe=true) additionally specifying wires (or wires_x and wires_y) to change the density of wires and a wireframe_color. The same holds for the plot as a surface (which is false by default) and its surface_resolution (or surface_resolution_x or surface_resolution_y) and a surface_color.

    using Manifolds, Plots
    +M = Hyperbolic(2)
    +pts =  [ [0.85*cos(φ), 0.85*sin(φ), sqrt(0.85^2+1)] for φ ∈ range(0,2π,length=11) ]
    +scene = plot(M, pts; geodesic_interpolation=100)
    Example block output

    To just plot the points atop, we can just omit the geodesic_interpolation parameter to obtain a scatter plot. Note that we avoid redrawing the wireframe in the following plot! calls.

    plot!(scene, M, pts; wireframe=false)
    Example block output

    We can further generate tangent vectors in these spaces and use a plot for there. Keep in mind that a tangent vector in plotting always requires its base point.

    pts2 = [ [0.45 .*cos(φ + 6π/11), 0.45 .*sin(φ + 6π/11), sqrt(0.45^2+1) ] for φ ∈ range(0,2π,length=11)]
    +vecs = log.(Ref(M),pts,pts2)
    +plot!(scene, M, pts, vecs; wireframe=false)
    Example block output

    Just to illustrate, for the first point the tangent vector is pointing along the following geodesic

    plot!(scene, M, [pts[1], pts2[1]]; geodesic_interpolation=100, wireframe=false)
    Example block output

    Internal functions

    The following functions are available for internal use to construct points in the hyperboloid model

    Manifolds._hyperbolizeMethod
    _hyperbolize(M, p, Y)

    Given the Hyperbolic(n) manifold using the hyperboloid model and a point p thereon, we can put a vector $Y\in ℝ^n$ into the tangent space by computing its last component such that for the resulting p we have that its minkowski_metric is $⟨p,X⟩_{\mathrm{M}} = 0$, i.e. $X_{n+1} = \frac{⟨\tilde p, Y⟩}{p_{n+1}}$, where $\tilde p = (p_1,\ldots,p_n)$.

    source
    Manifolds._hyperbolizeMethod
    _hyperbolize(M, q)

    Given the Hyperbolic(n) manifold using the hyperboloid model, a point from the $q\in ℝ^n$ can be set onto the manifold by computing its last component such that for the resulting p we have that its minkowski_metric is $⟨p,p⟩_{\mathrm{M}} = - 1$, i.e. $p_{n+1} = \sqrt{\lVert q \rVert^2 - 1}$

    source

    Poincaré ball model

    Base.convertMethod
    convert(::Type{PoincareBallPoint}, p::HyperboloidPoint)
    +convert(::Type{PoincareBallPoint}, p::T) where {T<:AbstractVector}

    convert a HyperboloidPoint $p∈ℝ^{n+1}$ from the hyperboloid model of the Hyperbolic manifold $\mathcal H^n$ to a PoincareBallPoint $π(p)∈ℝ^{n}$ in the Poincaré ball model. The isometry is defined by

    \[π(p) = \frac{1}{1+p_{n+1}} \begin{pmatrix}p_1\\⋮\\p_n\end{pmatrix}\]

    Note that this is also used, when x is a vector.

    source
    Base.convertMethod
    convert(::Type{PoincareBallPoint}, p::PoincareHalfSpacePoint)

    convert a point PoincareHalfSpacePoint p (from $ℝ^n$) from the Poincaré half plane model of the Hyperbolic manifold $\mathcal H^n$ to a PoincareBallPoint $π(p) ∈ ℝ^n$. Denote by $\tilde p = (p_1,\ldots,p_{d-1})^{\mathrm{T}}$. Then the isometry is defined by

    \[π(p) = \frac{1}{\lVert \tilde p \rVert^2 + (p_n+1)^2} +\begin{pmatrix}2p_1\\⋮\\2p_{n-1}\\\lVert p\rVert^2 - 1\end{pmatrix}.\]

    source
    Base.convertMethod
    convert(::Type{PoincareBallTVector}, p::HyperboloidPoint, X::HyperboloidTVector)
    +convert(::Type{PoincareBallTVector}, p::P, X::T) where {P<:AbstractVector, T<:AbstractVector}

    convert a HyperboloidTVector X at p to a PoincareBallTVector on the Hyperbolic manifold $\mathcal H^n$ by computing the push forward $π_*(p)[X]$ of the isometry $π$ that maps from the Hyperboloid to the Poincaré ball, cf. convert(::Type{PoincareBallPoint}, ::HyperboloidPoint).

    The formula reads

    \[π_*(p)[X] = \frac{1}{p_{n+1}+1}\Bigl(\tilde X - \frac{X_{n+1}}{p_{n+1}+1}\tilde p \Bigl),\]

    where $\tilde X = \begin{pmatrix}X_1\\⋮\\X_n\end{pmatrix}$ and $\tilde p = \begin{pmatrix}p_1\\⋮\\p_n\end{pmatrix}$.

    source
    Base.convertMethod
    convert(
    +    ::Type{PoincareBallTVector},
    +    p::PoincareHalfSpacePoint,
    +    X::PoincareHalfSpaceTVector
    +)

    convert a PoincareHalfSpaceTVector X at p to a PoincareBallTVector on the Hyperbolic manifold $\mathcal H^n$ by computing the push forward $π_*(p)[X]$ of the isometry $π$ that maps from the Poincaré half space to the Poincaré ball, cf. convert(::Type{PoincareBallPoint}, ::PoincareHalfSpacePoint).

    The formula reads

    \[π_*(p)[X] = +\frac{1}{\lVert \tilde p\rVert^2 + (1+p_n)^2} +\begin{pmatrix} +2X_1\\ +⋮\\ +2X_{n-1}\\ +2⟨X,p⟩ +\end{pmatrix} +- +\frac{2}{(\lVert \tilde p\rVert^2 + (1+p_n)^2)^2} +\begin{pmatrix} +2p_1(⟨X,p⟩+X_n)\\ +⋮\\ +2p_{n-1}(⟨X,p⟩+X_n)\\ +(\lVert p \rVert^2-1)(⟨X,p⟩+X_n) +\end{pmatrix}\]

    where $\tilde p = \begin{pmatrix}p_1\\⋮\\p_{n-1}\end{pmatrix}$.

    source
    Base.convertMethod
    convert(
    +    ::Type{Tuple{PoincareBallPoint,PoincareBallTVector}},
    +    (p,X)::Tuple{HyperboloidPoint,HyperboloidTVector}
    +)
    +convert(
    +    ::Type{Tuple{PoincareBallPoint,PoincareBallTVector}},
    +    (p, X)::Tuple{P,T},
    +) where {P<:AbstractVector, T <: AbstractVector}

    Convert a HyperboloidPoint p and a HyperboloidTVector X to a PoincareBallPoint and a PoincareBallTVector simultaneously, see convert(::Type{PoincareBallPoint}, ::HyperboloidPoint) and convert(::Type{PoincareBallTVector}, ::HyperboloidPoint, ::HyperboloidTVector) for the formulae.

    source
    Base.convertMethod
    convert(
    +    ::Type{Tuple{PoincareBallPoint,PoincareBallTVector}},
    +    (p,X)::Tuple{HyperboloidPoint,HyperboloidTVector}
    +)
    +convert(
    +    ::Type{Tuple{PoincareBallPoint,PoincareBallTVector}},
    +    (p, X)::Tuple{T,T},
    +) where {T <: AbstractVector}

    Convert a PoincareHalfSpacePoint p and a PoincareHalfSpaceTVector X to a PoincareBallPoint and a PoincareBallTVector simultaneously, see convert(::Type{PoincareBallPoint}, ::PoincareHalfSpacePoint) and convert(::Type{PoincareBallTVector}, ::PoincareHalfSpacePoint, ::PoincareHalfSpaceTVector) for the formulae.

    source
    ManifoldsBase.change_metricMethod
    change_metric(M::Hyperbolic{n}, ::EuclideanMetric, p::PoincareBallPoint, X::PoincareBallTVector)

    Since in the metric we always have the term $α = \frac{2}{1-\sum_{i=1}^n p_i^2}$ per element, the correction for the metric reads $Z = \frac{1}{α}X$.

    source
    ManifoldsBase.change_representerMethod
    change_representer(M::Hyperbolic{n}, ::EuclideanMetric, p::PoincareBallPoint, X::PoincareBallTVector)

    Since in the metric we have the term $α = \frac{2}{1-\sum_{i=1}^n p_i^2}$ per element, the correction for the gradient reads $Y = \frac{1}{α^2}X$.

    source
    ManifoldsBase.distanceMethod
    distance(::Hyperbolic, p::PoincareBallPoint, q::PoincareBallPoint)

    Compute the distance on the Hyperbolic manifold $\mathcal H^n$ represented in the Poincaré ball model. The formula reads

    \[d_{\mathcal H^n}(p,q) = +\operatorname{acosh}\Bigl( + 1 + \frac{2\lVert p - q \rVert^2}{(1-\lVert p\rVert^2)(1-\lVert q\rVert^2)} +\Bigr)\]

    source
    ManifoldsBase.innerMethod
    inner(::Hyperbolic, p::PoincareBallPoint, X::PoincareBallTVector, Y::PoincareBallTVector)

    Compute the inner producz in the Poincaré ball model. The formula reads

    \[g_p(X,Y) = \frac{4}{(1-\lVert p \rVert^2)^2} ⟨X, Y⟩ .\]

    source
    ManifoldsBase.projectMethod
    project(::Hyperbolic, ::PoincareBallPoint, ::PoincareBallTVector)

    projction of tangent vectors in the Poincaré ball model is just the identity, since the tangent space consists of all $ℝ^n$.

    source

    Visualization of the Poincaré ball

    For the case of Hyperbolic(2) there is a plotting available based on a PlottingRecipe you can easily plot points, connecting geodesics as well as tangent vectors.

    Note

    The recipes are only loaded if Plots.jl or RecipesBase.jl is loaded.

    If we consider a set of points, we can first plot these and their connecting geodesics using the geodesic_interpolation For the points. This variable specifies with how many points a geodesic between two successive points is sampled (per default it's -1, which deactivates geodesics) and the line style is set to be a path. Another keyword argument added is the border of the Poincaré disc, namely circle_points = 720 resolution of the drawn boundary (every hlaf angle) as well as its color, hyperbolic_border_color = RGBA(0.0, 0.0, 0.0, 1.0).

    using Manifolds, Plots
    +M = Hyperbolic(2)
    +pts = PoincareBallPoint.( [0.85 .* [cos(φ), sin(φ)] for φ ∈ range(0,2π,length=11)])
    +scene = plot(M, pts, geodesic_interpolation = 100)
    Example block output

    To just plot the points atop, we can just omit the geodesic_interpolation parameter to obtain a scatter plot

    plot!(scene, M, pts)
    Example block output

    We can further generate tangent vectors in these spaces and use a plot for there. Keep in mind, that a tangent vector in plotting always requires its base point

    pts2 = PoincareBallPoint.( [0.45 .* [cos(φ + 6π/11), sin(φ + 6π/11)] for φ ∈ range(0,2π,length=11)])
    +vecs = log.(Ref(M),pts,pts2)
    +plot!(scene, M, pts,vecs)
    Example block output

    Just to illustrate, for the first point the tangent vector is pointing along the following geodesic

    plot!(scene, M, [pts[1], pts2[1]], geodesic_interpolation=100)
    Example block output

    Poincaré half space model

    Base.convertMethod
    convert(::Type{PoincareHalfSpacePoint}, p::Hyperboloid)
    +convert(::Type{PoincareHalfSpacePoint}, p)

    convert a HyperboloidPoint or Vectorp (from $ℝ^{n+1}$) from the Hyperboloid model of the Hyperbolic manifold $\mathcal H^n$ to a PoincareHalfSpacePoint $π(x) ∈ ℝ^{n}$.

    This is done in two steps, namely transforming it to a Poincare ball point and from there further on to a PoincareHalfSpacePoint point.

    source
    Base.convertMethod
    convert(::Type{PoincareHalfSpacePoint}, p::PoincareBallPoint)

    convert a point PoincareBallPoint p (from $ℝ^n$) from the Poincaré ball model of the Hyperbolic manifold $\mathcal H^n$ to a PoincareHalfSpacePoint $π(p) ∈ ℝ^n$. Denote by $\tilde p = (p_1,\ldots,p_{n-1})$. Then the isometry is defined by

    \[π(p) = \frac{1}{\lVert \tilde p \rVert^2 - (p_n-1)^2} +\begin{pmatrix}2p_1\\⋮\\2p_{n-1}\\1-\lVert p\rVert^2\end{pmatrix}.\]

    source
    Base.convertMethod
    convert(::Type{PoincareHalfSpaceTVector}, p::HyperboloidPoint, ::HyperboloidTVector)
    +convert(::Type{PoincareHalfSpaceTVector}, p::P, X::T) where {P<:AbstractVector, T<:AbstractVector}

    convert a HyperboloidTVector X at p to a PoincareHalfSpaceTVector on the Hyperbolic manifold $\mathcal H^n$ by computing the push forward $π_*(p)[X]$ of the isometry $π$ that maps from the Hyperboloid to the Poincaré half space, cf. convert(::Type{PoincareHalfSpacePoint}, ::HyperboloidPoint).

    This is done similarly to the approach there, i.e. by using the Poincaré ball model as an intermediate step.

    source
    Base.convertMethod
    convert(::Type{PoincareHalfSpaceTVector}, p::PoincareBallPoint, X::PoincareBallTVector)

    convert a PoincareBallTVector X at p to a PoincareHalfSpacePoint on the Hyperbolic manifold $\mathcal H^n$ by computing the push forward $π_*(p)[X]$ of the isometry $π$ that maps from the Poincaré ball to the Poincaré half space, cf. convert(::Type{PoincareHalfSpacePoint}, ::PoincareBallPoint).

    The formula reads

    \[π_*(p)[X] = +\frac{1}{\lVert \tilde p\rVert^2 + (1-p_n)^2} +\begin{pmatrix} +2X_1\\ +⋮\\ +2X_{n-1}\\ +-2⟨X,p⟩ +\end{pmatrix} +- +\frac{2}{(\lVert \tilde p\rVert^2 + (1-p_n)^2)^2} +\begin{pmatrix} +2p_1(⟨X,p⟩-X_n)\\ +⋮\\ +2p_{n-1}(⟨X,p⟩-X_n)\\ +(\lVert p \rVert^2-1)(⟨X,p⟩-X_n) +\end{pmatrix}\]

    where $\tilde p = \begin{pmatrix}p_1\\⋮\\p_{n-1}\end{pmatrix}$.

    source
    Base.convertMethod
    convert(
    +    ::Type{Tuple{PoincareHalfSpacePoint,PoincareHalfSpaceTVector}},
    +    (p,X)::Tuple{HyperboloidPoint,HyperboloidTVector}
    +)
    +convert(
    +    ::Type{Tuple{PoincareHalfSpacePoint,PoincareHalfSpaceTVector}},
    +    (p, X)::Tuple{P,T},
    +) where {P<:AbstractVector, T <: AbstractVector}

    Convert a HyperboloidPoint p and a HyperboloidTVector X to a PoincareHalfSpacePoint and a PoincareHalfSpaceTVector simultaneously, see convert(::Type{PoincareHalfSpacePoint}, ::HyperboloidPoint) and convert(::Type{PoincareHalfSpaceTVector}, ::Tuple{HyperboloidPoint,HyperboloidTVector}) for the formulae.

    source
    ManifoldsBase.distanceMethod
    distance(::Hyperbolic, p::PoincareHalfSpacePoint, q::PoincareHalfSpacePoint)

    Compute the distance on the Hyperbolic manifold $\mathcal H^n$ represented in the Poincaré half space model. The formula reads

    \[d_{\mathcal H^n}(p,q) = \operatorname{acosh}\Bigl( 1 + \frac{\lVert p - q \rVert^2}{2 p_n q_n} \Bigr)\]

    source
    ManifoldsBase.innerMethod
    inner(
    +    ::Hyperbolic{n},
    +    p::PoincareHalfSpacePoint,
    +    X::PoincareHalfSpaceTVector,
    +    Y::PoincareHalfSpaceTVector
    +)

    Compute the inner product in the Poincaré half space model. The formula reads

    \[g_p(X,Y) = \frac{⟨X,Y⟩}{p_n^2}.\]

    source
    ManifoldsBase.projectMethod
    project(::Hyperbolic, ::PoincareHalfSpacePoint ::PoincareHalfSpaceTVector)

    projction of tangent vectors in the Poincaré half space model is just the identity, since the tangent space consists of all $ℝ^n$.

    source

    Visualization on the Poincaré half plane

    For the case of Hyperbolic(2) there is a plotting available based on a PlottingRecipe you can easily plot points, connecting geodesics as well as tangent vectors.

    Note

    The recipes are only loaded if Plots.jl or RecipesBase.jl is loaded.

    We again have two different recipes, one for points, one for tangent vectors, where the first one again can be equipped with geodesics between the points. In the following example we generate 7 points on an ellipse in the Hyperboloid model.

    using Manifolds, Plots
    +M = Hyperbolic(2)
    +pre_pts = [2.0 .* [5.0*cos(φ), sin(φ)] for φ ∈ range(0,2π,length=7)]
    +pts = convert.(
    +    Ref(PoincareHalfSpacePoint),
    +    Manifolds._hyperbolize.(Ref(M), pre_pts)
    +)
    +scene = plot(M, pts, geodesic_interpolation = 100)
    Example block output

    To just plot the points atop, we can just omit the geodesic_interpolation parameter to obtain a scatter plot

    plot!(scene, M, pts)
    Example block output

    We can further generate tangent vectors in these spaces and use a plot for there. Keep in mind, that a tangent vector in plotting always requires its base point. Here we would like to look at the tangent vectors pointing to the origin

    origin = PoincareHalfSpacePoint([0.0,1.0])
    +vecs = [log(M,p,origin) for p ∈ pts]
    +scene = plot!(scene, M, pts, vecs)
    Example block output

    And we can again look at the corresponding geodesics, for example

    plot!(scene, M, [pts[1], origin], geodesic_interpolation=100)
    +plot!(scene, M, [pts[2], origin], geodesic_interpolation=100)
    Example block output

    Literature

    [CLLD22]
    +
    +
    E. Chevallier, D. Li, Y. Lu and D. B. Dunson. Exponential-wrapped distributions on symmetric spaces. ArXiv Preprint (2022).
    +
    [Lee19]
    +
    +
    J. M. Lee. Introduction to Riemannian Manifolds. Springer Cham (2019).
    +
    [Ngu23]
    +
    +
    D. Nguyen. Operator-Valued Formulas for Riemannian Gradient and Hessian and Families of Tractable Metrics in Riemannian Optimization. Journal of Optimization Theory and Applications 198, 135–164 (2023), arXiv:2009.10159.
    +
    +
    diff --git a/v0.8.79/manifolds/lorentz.html b/v0.8.79/manifolds/lorentz.html new file mode 100644 index 0000000000..e2a7750077 --- /dev/null +++ b/v0.8.79/manifolds/lorentz.html @@ -0,0 +1,3 @@ + +Lorentzian manifold · Manifolds.jl

    Lorentzian Manifold

    The Lorentz manifold is a pseudo-Riemannian manifold. It is named after the Dutch physicist Hendrik Lorentz (1853–1928). The default LorentzMetric is the MinkowskiMetric named after the German mathematician Hermann Minkowski (1864–1909).

    Within Manifolds.jl it is used as the embedding of the Hyperbolic space.

    Manifolds.LorentzType
    Lorentz{N} = MetricManifold{Euclidean{N,ℝ},LorentzMetric}

    The Lorentz manifold (or Lorentzian) is a pseudo-Riemannian manifold.

    Constructor

    Lorentz(n[, metric=MinkowskiMetric()])

    Generate the Lorentz manifold of dimension n with the LorentzMetric m, which is by default set to the MinkowskiMetric.

    source
    Manifolds.LorentzMetricType
    LorentzMetric <: AbstractMetric

    Abstract type for Lorentz metrics, which have a single time dimension. These metrics assume the spacelike convention with the time dimension being last, giving the signature $(++...+-)$.

    source
    Manifolds.minkowski_metricMethod
    minkowski_metric(a,b)

    Compute the minkowski metric on $\mathbb R^n$ is given by

    \[⟨a,b⟩_{\mathrm{M}} = -a_{n}b_{n} + +\displaystyle\sum_{k=1}^{n-1} a_kb_k.\]

    source
    diff --git a/v0.8.79/manifolds/metric.html b/v0.8.79/manifolds/metric.html new file mode 100644 index 0000000000..ed02b41859 --- /dev/null +++ b/v0.8.79/manifolds/metric.html @@ -0,0 +1,7 @@ + +Metric manifold · Manifolds.jl

    Metric manifold

    A Riemannian manifold always consists of a topological manifold together with a smoothly varying metric $g$.

    However, often there is an implicitly assumed (default) metric, like the usual inner product on Euclidean space. This decorator takes this into account. It is not necessary to use this decorator if you implement just one (or the first) metric. If you later introduce a second, the old (first) metric can be used with the (non MetricManifold) AbstractManifold, i.e. without an explicitly stated metric.

    This manifold decorator serves two purposes:

    1. to implement different metrics (e.g. in closed form) for one AbstractManifold
    2. to provide a way to compute geodesics on manifolds, where this AbstractMetric does not yield closed formula.

    Note that a metric manifold is has a IsConnectionManifold trait referring to the LeviCivitaConnection of the metric $g$, and thus a large part of metric manifold's functionality relies on this.

    Let's first look at the provided types.

    Types

    Manifolds.IsMetricManifoldType
    IsMetricManifold <: AbstractTrait

    Specify that a certain decorated Manifold is a metric manifold in the sence that it provides explicit metric properties, extending/changing the default metric properties of a manifold.

    source
    Manifolds.MetricManifoldType
    MetricManifold{𝔽,M<:AbstractManifold{𝔽},G<:AbstractMetric} <: AbstractDecoratorManifold{𝔽}

    Equip a AbstractManifold explicitly with an AbstractMetric G.

    For a Metric AbstractManifold, by default, assumes, that you implement the linear form from local_metric in order to evaluate the exponential map.

    If the corresponding AbstractMetric G yields closed form formulae for e.g. the exponential map and this is implemented directly (without solving the ode), you can of course still implement that directly.

    Constructor

    MetricManifold(M, G)

    Generate the AbstractManifold M as a manifold with the AbstractMetric G.

    source

    Implement Different Metrics on the same Manifold

    In order to distinguish different metrics on one manifold, one can introduce two AbstractMetrics and use this type to dispatch on the metric, see SymmetricPositiveDefinite. To avoid overhead, one AbstractMetric can then be marked as being the default, i.e. the one that is used, when no MetricManifold decorator is present. This avoids reimplementation of the first existing metric, access to the metric-dependent functions that were implemented using the undecorated manifold, as well as the transparent fallback of the corresponding MetricManifold with default metric to the undecorated implementations. This does not cause any runtime overhead. Introducing a default AbstractMetric serves a better readability of the code when working with different metrics.

    Implementation of Metrics

    For the case that a local_metric is implemented as a bilinear form that is positive definite, the following further functions are provided, unless the corresponding AbstractMetric is marked as default – then the fallbacks mentioned in the last section are used for e.g. the exponential map.

    Manifolds.det_local_metricMethod
    det_local_metric(M::AbstractManifold, p, B::AbstractBasis)

    Return the determinant of local matrix representation of the metric tensor $g$, i.e. of the matrix $G(p)$ representing the metric in the tangent space at $p$ with as a matrix.

    See also local_metric

    source
    Manifolds.flatMethod
    flat(N::MetricManifold{M,G}, p, X::TFVector)

    Compute the musical isomorphism to transform the tangent vector X from the AbstractManifold M equipped with AbstractMetric G to a cotangent by computing

    \[X^♭= G_p X,\]

    where $G_p$ is the local matrix representation of G, see local_metric

    source
    Manifolds.inverse_local_metricMethod
    inverse_local_metric(M::AbstractcManifold{𝔽}, p, B::AbstractBasis)

    Return the local matrix representation of the inverse metric (cometric) tensor of the tangent space at p on the AbstractManifold M with respect to the AbstractBasis basis B.

    The metric tensor (see local_metric) is usually denoted by $G = (g_{ij}) ∈ 𝔽^{d×d}$, where $d$ is the dimension of the manifold.

    Then the inverse local metric is denoted by $G^{-1} = g^{ij}$.

    source
    Manifolds.local_metricMethod
    local_metric(M::AbstractManifold{𝔽}, p, B::AbstractBasis)

    Return the local matrix representation at the point p of the metric tensor $g$ with respect to the AbstractBasis B on the AbstractManifold M. Let $d$denote the dimension of the manifold and $b_1,\ldots,b_d$ the basis vectors. Then the local matrix representation is a matrix $G\in 𝔽^{n\times n}$ whose entries are given by $g_{ij} = g_p(b_i,b_j), i,j\in\{1,…,d\}$.

    This yields the property for two tangent vectors (using Einstein summation convention) $X = X^ib_i, Y=Y^ib_i \in T_p\mathcal M$ we get $g_p(X, Y) = g_{ij} X^i Y^j$.

    source
    Manifolds.local_metric_jacobianMethod
    local_metric_jacobian(
    +    M::AbstractManifold,
    +    p,
    +    B::AbstractBasis;
    +    backend::AbstractDiffBackend,
    +)

    Get partial derivatives of the local metric of M at p in basis B with respect to the coordinates of p, $\frac{∂}{∂ p^k} g_{ij} = g_{ij,k}$. The dimensions of the resulting multi-dimensional array are ordered $(i,j,k)$.

    source
    Manifolds.log_local_metric_densityMethod
    log_local_metric_density(M::AbstractManifold, p, B::AbstractBasis)

    Return the natural logarithm of the metric density $ρ$ of M at p, which is given by $ρ = \log \sqrt{|\det [g_{ij}]|}$ for the metric tensor expressed in basis B.

    source
    Manifolds.ricci_curvatureMethod
    ricci_curvature(M::AbstractManifold, p, B::AbstractBasis; backend::AbstractDiffBackend = default_differential_backend())

    Compute the Ricci scalar curvature of the manifold M at the point p using basis B. The curvature is computed as the trace of the Ricci curvature tensor with respect to the metric, that is $R=g^{ij}R_{ij}$ where $R$ is the scalar Ricci curvature at p, $g^{ij}$ is the inverse local metric (see inverse_local_metric) at p and $R_{ij}$ is the Riccie curvature tensor, see ricci_tensor. Both the tensor and inverse local metric are expressed in local coordinates defined by B, and the formula uses the Einstein summation convention.

    source
    Manifolds.sharpMethod
    sharp(N::MetricManifold{M,G}, p, ξ::CoTFVector)

    Compute the musical isomorphism to transform the cotangent vector ξ from the AbstractManifold M equipped with AbstractMetric G to a tangent by computing

    \[ξ^♯ = G_p^{-1} ξ,\]

    where $G_p$ is the local matrix representation of G, i.e. one employs inverse_local_metric here to obtain $G_p^{-1}$.

    source
    ManifoldsBase.innerMethod
    inner(N::MetricManifold{M,G}, p, X, Y)

    Compute the inner product of X and Y from the tangent space at p on the AbstractManifold M using the AbstractMetric G. If M has G as its IsDefaultMetric trait, this is done using inner(M, p, X, Y), otherwise the local_metric(M, p) is employed as

    \[g_p(X, Y) = ⟨X, G_p Y⟩,\]

    where $G_p$ is the loal matrix representation of the AbstractMetric G.

    source

    Metrics, charts and bases of vector spaces

    Metric-related functions, similarly to connection-related functions, need to operate in a basis of a vector space, see here.

    Metric-related functions can take bases of associated tangent spaces as arguments. For example local_metric can take the basis of the tangent space it is supposed to operate on instead of a custom basis of the space of symmetric bilinear operators.

    diff --git a/v0.8.79/manifolds/multinomial.html b/v0.8.79/manifolds/multinomial.html new file mode 100644 index 0000000000..24a6a51697 --- /dev/null +++ b/v0.8.79/manifolds/multinomial.html @@ -0,0 +1,2 @@ + +Multinomial matrices · Manifolds.jl

    Multinomial matrices

    Manifolds.MultinomialMatricesType
    MultinomialMatrices{n,m} <: AbstractPowerManifold{ℝ}

    The multinomial manifold consists of m column vectors, where each column is of length n and unit norm, i.e.

    \[\mathcal{MN}(n,m) \coloneqq \bigl\{ p ∈ ℝ^{n×m}\ \big|\ p_{i,j} > 0 \text{ for all } i=1,…,n, j=1,…,m \text{ and } p^{\mathrm{T}}\mathbb{1}_m = \mathbb{1}_n\bigr\},\]

    where $\mathbb{1}_k$ is the vector of length $k$ containing ones.

    This yields exactly the same metric as considering the product metric of the probablity vectors, i.e. PowerManifold of the $(n-1)$-dimensional ProbabilitySimplex.

    The ProbabilitySimplex is stored internally within M.manifold, such that all functions of AbstractPowerManifold can be used directly.

    Constructor

    MultinomialMatrices(n, m)

    Generate the manifold of matrices $\mathbb R^{n×m}$ such that the $m$ columns are discrete probability distributions, i.e. sum up to one.

    source

    Functions

    Most functions are directly implemented for an AbstractPowerManifold with ArrayPowerRepresentation except the following special cases:

    diff --git a/v0.8.79/manifolds/multinomialdoublystochastic.html b/v0.8.79/manifolds/multinomialdoublystochastic.html new file mode 100644 index 0000000000..1e6824f647 --- /dev/null +++ b/v0.8.79/manifolds/multinomialdoublystochastic.html @@ -0,0 +1,17 @@ + +Multinomial doubly stochastic matrices · Manifolds.jl

    Multinomial doubly stochastic matrices

    Manifolds.MultinomialDoubleStochasticType
    MultinomialDoublyStochastic{n} <: AbstractMultinomialDoublyStochastic{N}

    The set of doubly stochastic multinomial matrices consists of all $n×n$ matrices with stochastic columns and rows, i.e.

    \[\begin{aligned} +\mathcal{DP}(n) \coloneqq \bigl\{p ∈ ℝ^{n×n}\ \big|\ &p_{i,j} > 0 \text{ for all } i=1,…,n, j=1,…,m,\\ +& p\mathbf{1}_n = p^{\mathrm{T}}\mathbf{1}_n = \mathbf{1}_n +\bigr\}, +\end{aligned}\]

    where $\mathbf{1}_n$ is the vector of length $n$ containing ones.

    The tangent space can be written as

    \[T_p\mathcal{DP}(n) \coloneqq \bigl\{ +X ∈ ℝ^{n×n}\ \big|\ X = X^{\mathrm{T}} \text{ and } +X\mathbf{1}_n = X^{\mathrm{T}}\mathbf{1}_n = \mathbf{0}_n +\bigr\},\]

    where $\mathbf{0}_n$ is the vector of length $n$ containing zeros.

    More details can be found in Section III [DH19].

    Constructor

    MultinomialDoubleStochastic(n)

    Generate the manifold of matrices $\mathbb R^{n×n}$ that are doubly stochastic and symmetric.

    source
    ManifoldsBase.projectMethod
    project(
    +    M::AbstractMultinomialDoublyStochastic,
    +    p;
    +    maxiter = 100,
    +    tolerance = eps(eltype(p))
    +)

    project a matrix p with positive entries applying Sinkhorn's algorithm. Note that this projct method – different from the usual case, accepts keywords.

    source
    ManifoldsBase.projectMethod
    project(M::MultinomialDoubleStochastic{n}, p, Y) where {n}

    Project Y onto the tangent space at p on the MultinomialDoubleStochastic M, return the result in X. The formula reads

    \[ \operatorname{proj}_p(Y) = Y - (α\mathbf{1}_n^{\mathrm{T}} + \mathbf{1}_nβ^{\mathrm{T}}) ⊙ p,\]

    where $⊙$ denotes the Hadamard or elementwise product and $\mathbb{1}_n$ is the vector of length $n$ containing ones. The two vectors $α,β ∈ ℝ^{n×n}$ are computed as a solution (typically using the left pseudo inverse) of

    \[ \begin{pmatrix} I_n & p\\p^{\mathrm{T}} & I_n \end{pmatrix} + \begin{pmatrix} α\\ β\end{pmatrix} + = + \begin{pmatrix} Y\mathbf{1}\\Y^{\mathrm{T}}\mathbf{1}\end{pmatrix},\]

    where $I_n$ is the $n×n$ unit matrix and $\mathbf{1}_n$ is the vector of length $n$ containing ones.

    source
    ManifoldsBase.retractMethod
    retract(M::MultinomialDoubleStochastic, p, X, ::ProjectionRetraction)

    compute a projection based retraction by projecting $p\odot\exp(X⨸p)$ back onto the manifold, where $⊙,⨸$ are elementwise multiplication and division, respectively. Similarly, $\exp$ refers to the elementwise exponentiation.

    source

    Literature

    diff --git a/v0.8.79/manifolds/multinomialsymmetric.html b/v0.8.79/manifolds/multinomialsymmetric.html new file mode 100644 index 0000000000..52afe919c6 --- /dev/null +++ b/v0.8.79/manifolds/multinomialsymmetric.html @@ -0,0 +1,10 @@ + +Multinomial symmetric matrices · Manifolds.jl

    Multinomial symmetric matrices

    Manifolds.MultinomialSymmetricType
    MultinomialSymmetric{n} <: AbstractMultinomialDoublyStochastic{N}

    The multinomial symmetric matrices manifold consists of all symmetric $n×n$ matrices with positive entries such that each column sums to one, i.e.

    \[\begin{aligned} +\mathcal{SP}(n) \coloneqq \bigl\{p ∈ ℝ^{n×n}\ \big|\ &p_{i,j} > 0 \text{ for all } i=1,…,n, j=1,…,m,\\ +& p^\mathrm{T} = p,\\ +& p\mathbf{1}_n = \mathbf{1}_n +\bigr\}, +\end{aligned}\]

    where $\mathbf{1}_n$ is the vector of length $n$ containing ones.

    It is modeled as IsIsometricEmbeddedManifold. via the AbstractMultinomialDoublyStochastic type, since it shares a few functions also with AbstractMultinomialDoublyStochastic, most and foremost projection of a point from the embedding onto the manifold.

    The tangent space can be written as

    \[T_p\mathcal{SP}(n) \coloneqq \bigl\{ +X ∈ ℝ^{n×n}\ \big|\ X = X^{\mathrm{T}} \text{ and } +X\mathbf{1}_n = \mathbf{0}_n +\bigr\},\]

    where $\mathbf{0}_n$ is the vector of length $n$ containing zeros.

    More details can be found in Section IV [DH19].

    Constructor

    MultinomialSymmetric(n)

    Generate the manifold of matrices $\mathbb R^{n×n}$ that are doubly stochastic and symmetric.

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::MultinomialSymmetric p, X; kwargs...)

    Checks whether X is a valid tangent vector to p on the MultinomialSymmetric M. This means, that p is valid, that X is of correct dimension, symmetric, and sums to zero along any row.

    source
    ManifoldsBase.projectMethod
    project(M::MultinomialSymmetric{n}, p, Y) where {n}

    Project Y onto the tangent space at p on the MultinomialSymmetric M, return the result in X. The formula reads

    \[ \operatorname{proj}_p(Y) = Y - (α\mathbf{1}_n^{\mathrm{T}} + \mathbf{1}_n α^{\mathrm{T}}) ⊙ p,\]

    where $⊙$ denotes the Hadamard or elementwise product and $\mathbb{1}_n$ is the vector of length $n$ containing ones. The two vector $α ∈ ℝ^{n×n}$ is given by solving

    \[ (I_n+p)α = Y\mathbf{1},\]

    where $I_n$ is teh $n×n$ unit matrix and $\mathbf{1}_n$ is the vector of length $n$ containing ones.

    source
    ManifoldsBase.retractMethod
    retract(M::MultinomialSymmetric, p, X, ::ProjectionRetraction)

    compute a projection based retraction by projecting $p\odot\exp(X⨸p)$ back onto the manifold, where $⊙,⨸$ are elementwise multiplication and division, respectively. Similarly, $\exp$ refers to the elementwise exponentiation.

    source

    Literature

    diff --git a/v0.8.79/manifolds/oblique.html b/v0.8.79/manifolds/oblique.html new file mode 100644 index 0000000000..99e02c35bf --- /dev/null +++ b/v0.8.79/manifolds/oblique.html @@ -0,0 +1,2 @@ + +Oblique manifold · Manifolds.jl

    Oblique manifold

    The oblique manifold $\mathcal{OB}(n,m)$ is modeled as an AbstractPowerManifold of the (real-valued) Sphere and uses ArrayPowerRepresentation. Points on the torus are hence matrices, $x ∈ ℝ^{n,m}$.

    Manifolds.ObliqueType
    Oblique{N,M,𝔽} <: AbstractPowerManifold{𝔽}

    The oblique manifold $\mathcal{OB}(n,m)$ is the set of 𝔽-valued matrices with unit norm column endowed with the metric from the embedding. This yields exactly the same metric as considering the product metric of the unit norm vectors, i.e. PowerManifold of the $(n-1)$-dimensional Sphere.

    The Sphere is stored internally within M.manifold, such that all functions of AbstractPowerManifold can be used directly.

    Constructor

    Oblique(n,m)

    Generate the manifold of matrices $\mathbb R^{n × m}$ such that the $m$ columns are unit vectors, i.e. from the Sphere(n-1).

    source

    Functions

    Most functions are directly implemented for an AbstractPowerManifold with ArrayPowerRepresentation except the following special cases:

    ManifoldsBase.check_pointMethod
    check_point(M::Oblique{n,m},p)

    Checks whether p is a valid point on the Oblique{m,n} M, i.e. is a matrix of m unit columns from $\mathbb R^{n}$, i.e. each column is a point from Sphere(n-1).

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::Oblique p, X; kwargs...)

    Checks whether X is a valid tangent vector to p on the Oblique M. This means, that p is valid, that X is of correct dimension and columnswise a tangent vector to the columns of p on the Sphere.

    source
    diff --git a/v0.8.79/manifolds/positivenumbers.html b/v0.8.79/manifolds/positivenumbers.html new file mode 100644 index 0000000000..c7792cdf60 --- /dev/null +++ b/v0.8.79/manifolds/positivenumbers.html @@ -0,0 +1,2 @@ + +Positive numbers · Manifolds.jl

    Positive Numbers

    The manifold PositiveNumbers represents positive numbers with hyperbolic geometry. Additionally, there are also short forms for its corresponding PowerManifolds, i.e. PositiveVectors, PositiveMatrices, and PositiveArrays.

    Manifolds.PositiveNumbersType
    PositiveNumbers <: AbstractManifold{ℝ}

    The hyperbolic manifold of positive numbers $H^1$ is a the hyperbolic manifold represented by just positive numbers.

    Constructor

    PositiveNumbers()

    Generate the -valued hyperbolic model represented by positive positive numbers. To use this with arrays (1-element arrays), please use SymmetricPositiveDefinite(1).

    source
    Base.expMethod
    exp(M::PositiveNumbers, p, X)

    Compute the exponential map on the PositiveNumbers M.

    \[\exp_p X = p\operatorname{exp}(X/p).\]

    source
    ManifoldDiff.riemannian_HessianMethod
    riemannian_Hessian(M::SymmetricPositiveDefinite, p, G, H, X)

    The Riemannian Hessian can be computed as stated in Eq. (7.3) [Ngu23]. Let $\nabla f(p)$ denote the Euclidean gradient G, $\nabla^2 f(p)[X]$ the Euclidean Hessian H. Then the formula reads

    \[ \operatorname{Hess}f(p)[X] = p\bigl(∇^2 f(p)[X]\bigr)p + X\bigl(∇f(p)\bigr)p\]

    source
    ManifoldsBase.change_metricMethod
    change_metric(M::PositiveNumbers, E::EuclideanMetric, p, X)

    Given a tangent vector $X ∈ T_p\mathcal M$ representing a linear function with respect to the EuclideanMetric g_E, this function changes the representer into the one with respect to the positivity metric of PositiveNumbers M.

    For all $Z,Y$ we are looking for the function $c$ on the tangent space at $p$ such that

    \[ ⟨Z,Y⟩ = XY = \frac{c(Z)c(Y)}{p^2} = g_p(c(Y),c(Z))\]

    and hence $C(X) = pX$.

    source
    ManifoldsBase.change_representerMethod
    change_representer(M::PositiveNumbers, E::EuclideanMetric, p, X)

    Given a tangent vector $X ∈ T_p\mathcal M$ representing a linear function with respect to the EuclideanMetric g_E, this function changes the representer into the one with respect to the positivity metric representation of PositiveNumbers M.

    For all tangent vectors $Y$ the result $Z$ has to fulfill

    \[ ⟨X,Y⟩ = XY = \frac{ZY}{p^2} = g_p(YZ)\]

    and hence $Z = p^2X$

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::PositiveNumbers, p, X; kwargs...)

    Check whether X is a tangent vector in the tangent space of p on the PositiveNumbers M. For the real-valued case represented by positive numbers, all X are valid, since the tangent space is the whole real line. For the complex-valued case X [...]

    source
    ManifoldsBase.innerMethod
    inner(M::PositiveNumbers, p, X, Y)

    Compute the inner product of the two tangent vectors X,Y from the tangent plane at p on the PositiveNumbers M, i.e.

    \[g_p(X,Y) = \frac{XY}{p^2}.\]

    source
    diff --git a/v0.8.79/manifolds/power.html b/v0.8.79/manifolds/power.html new file mode 100644 index 0000000000..51bfae276d --- /dev/null +++ b/v0.8.79/manifolds/power.html @@ -0,0 +1,56 @@ + +Power manifold · Manifolds.jl

    Power manifold

    A power manifold is based on a AbstractManifold $\mathcal M$ to build a $\mathcal M^{n_1 \times n_2 \times \cdots \times n_m}$. In the case where $m=1$ we can represent a manifold-valued vector of data of length $n_1$, for example a time series. The case where $m=2$ is useful for representing manifold-valued matrices of data of size $n_1 \times n_2$, for example certain types of images.

    There are three available representations for points and vectors on a power manifold:

    • ArrayPowerRepresentation (the default one), very efficient but only applicable when points on the underlying manifold are represented using plain AbstractArrays.
    • NestedPowerRepresentation, applicable to any manifold. It assumes that points on the underlying manifold are represented using mutable data types.
    • NestedReplacingPowerRepresentation, applicable to any manifold. It does not mutate points on the underlying manifold, replacing them instead when appropriate.

    Below are some examples of usage of these representations.

    Example

    There are two ways to store the data: in a multidimensional array or in a nested array.

    Let's look at an example for both. Let $\mathcal M$ be Sphere(2) the 2-sphere and we want to look at vectors of length 4.

    ArrayPowerRepresentation

    For the default, the ArrayPowerRepresentation, we store the data in a multidimensional array,

    using Manifolds
    +M = PowerManifold(Sphere(2), 4)
    +p = cat([1.0, 0.0, 0.0],
    +        [1/sqrt(2.0), 1/sqrt(2.0), 0.0],
    +        [1/sqrt(2.0), 0.0, 1/sqrt(2.0)],
    +        [0.0, 1.0, 0.0]
    +    ,dims=2)
    3×4 Matrix{Float64}:
    + 1.0  0.707107  0.707107  0.0
    + 0.0  0.707107  0.0       1.0
    + 0.0  0.0       0.707107  0.0

    which is a valid point i.e.

    is_point(M, p)
    true

    This can also be used in combination with HybridArrays.jl and StaticArrays.jl, by setting

    using HybridArrays, StaticArrays
    +q = HybridArray{Tuple{3,StaticArrays.Dynamic()},Float64,2}(p)
    3×4 HybridArrays.HybridMatrix{3, StaticArraysCore.Dynamic(), Float64, 2, Matrix{Float64}} with indices SOneTo(3)×Base.OneTo(4):
    + 1.0  0.707107  0.707107  0.0
    + 0.0  0.707107  0.0       1.0
    + 0.0  0.0       0.707107  0.0

    which is still a valid point on M and PowerManifold works with these, too.

    An advantage of this representation is that it is quite efficient, especially when a HybridArray (from the HybridArrays.jl package) is used to represent a point on the power manifold. A disadvantage is not being able to easily identify parts of the multidimensional array that correspond to a single point on the base manifold. Another problem is, that accessing a single point is p[:, 1] which might be unintuitive.

    NestedPowerRepresentation

    For the NestedPowerRepresentation we can now do

    using Manifolds
    +M = PowerManifold(Sphere(2), NestedPowerRepresentation(), 4)
    +p = [ [1.0, 0.0, 0.0],
    +      [1/sqrt(2.0), 1/sqrt(2.0), 0.0],
    +      [1/sqrt(2.0), 0.0, 1/sqrt(2.0)],
    +      [0.0, 1.0, 0.0],
    +    ]
    4-element Vector{Vector{Float64}}:
    + [1.0, 0.0, 0.0]
    + [0.7071067811865475, 0.7071067811865475, 0.0]
    + [0.7071067811865475, 0.0, 0.7071067811865475]
    + [0.0, 1.0, 0.0]

    which is again a valid point so is_point(M, p) here also yields true. A disadvantage might be that with nested arrays one loses a little bit of performance. The data however is nicely encapsulated. Accessing the first data item is just p[1].

    For accessing points on power manifolds in both representations you can use get_component and set_component! functions. They work work both point representations.

    using Manifolds
    +M = PowerManifold(Sphere(2), NestedPowerRepresentation(), 4)
    +p = [ [1.0, 0.0, 0.0],
    +      [1/sqrt(2.0), 1/sqrt(2.0), 0.0],
    +      [1/sqrt(2.0), 0.0, 1/sqrt(2.0)],
    +      [0.0, 1.0, 0.0],
    +    ]
    +set_component!(M, p, [0.0, 0.0, 1.0], 4)
    +get_component(M, p, 4)
    3-element Vector{Float64}:
    + 0.0
    + 0.0
    + 1.0

    NestedReplacingPowerRepresentation

    The final representation is the NestedReplacingPowerRepresentation. It is similar to the NestedPowerRepresentation but it does not perform in-place operations on the points on the underlying manifold. The example below uses this representation to store points on a power manifold of the SpecialEuclidean group in-line in an Vector for improved efficiency. When having a mixture of both, i.e. an array structure that is nested (like ´NestedPowerRepresentation) in the sense that the elements of the main vector are immutable, then changing the elements can not be done in an in-place way and hence NestedReplacingPowerRepresentation has to be used.

    using Manifolds, StaticArrays
    +R2 = Rotations(2)
    +
    +G = SpecialEuclidean(2)
    +N = 5
    +GN = PowerManifold(G, NestedReplacingPowerRepresentation(), N)
    +
    +q = [1.0 0.0; 0.0 1.0]
    +p1 = [ProductRepr(SVector{2,Float64}([i - 0.1, -i]), SMatrix{2,2,Float64}(exp(R2, q, hat(R2, q, i)))) for i in 1:N]
    +p2 = [ProductRepr(SVector{2,Float64}([i - 0.1, -i]), SMatrix{2,2,Float64}(exp(R2, q, hat(R2, q, -i)))) for i in 1:N]
    +
    +X = similar(p1);
    +
    +log!(GN, X, p1, p2)
    5-element Vector{ProductRepr{Tuple{StaticArraysCore.SVector{2, Float64}, StaticArraysCore.SMatrix{2, 2, Float64, 4}}}}:
    + ProductRepr{Tuple{StaticArraysCore.SVector{2, Float64}, StaticArraysCore.SMatrix{2, 2, Float64, 4}}}(([0.0, 0.0], [0.0 2.0; -2.0 0.0]))
    + ProductRepr{Tuple{StaticArraysCore.SVector{2, Float64}, StaticArraysCore.SMatrix{2, 2, Float64, 4}}}(([0.0, 0.0], [0.0 -2.2831853071795862; 2.2831853071795862 0.0]))
    + ProductRepr{Tuple{StaticArraysCore.SVector{2, Float64}, StaticArraysCore.SMatrix{2, 2, Float64, 4}}}(([0.0, 0.0], [0.0 -0.28318530717958645; 0.28318530717958645 0.0]))
    + ProductRepr{Tuple{StaticArraysCore.SVector{2, Float64}, StaticArraysCore.SMatrix{2, 2, Float64, 4}}}(([0.0, 0.0], [0.0 1.7168146928204135; -1.7168146928204135 0.0]))
    + ProductRepr{Tuple{StaticArraysCore.SVector{2, Float64}, StaticArraysCore.SMatrix{2, 2, Float64, 4}}}(([0.0, 0.0], [0.0 -2.566370614359173; 2.566370614359173 0.0]))

    Types and Functions

    Manifolds.ArrayPowerRepresentationType
    ArrayPowerRepresentation

    Representation of points and tangent vectors on a power manifold using multidimensional arrays where first dimensions are equal to representation_size of the wrapped manifold and the following ones are equal to the number of elements in each direction.

    Torus uses this representation.

    source
    Manifolds.PowerFVectorDistributionType
    PowerFVectorDistribution([type::VectorBundleFibers], [x], distr)

    Generates a random vector at a point from vector space (a fiber of a tangent bundle) of type type using the power distribution of distr.

    Vector space type and point can be automatically inferred from distribution distr.

    source
    Manifolds.PowerMetricType
    PowerMetric <: AbstractMetric

    Represent the AbstractMetric on an AbstractPowerManifold, i.e. the inner product on the tangent space is the sum of the inner product of each elements tangent space of the power manifold.

    source
    ManifoldDiff.riemannian_HessianMethod
    Y = riemannian_Hessian(M::AbstractPowerManifold, p, G, H, X)
    +riemannian_Hessian!(M::AbstractPowerManifold, Y, p, G, H, X)

    Compute the Riemannian Hessian $\operatorname{Hess} f(p)[X]$ given the Euclidean gradient $∇ f(\tilde p)$ in G and the Euclidean Hessian $∇^2 f(\tilde p)[\tilde X]$ in H, where $\tilde p, \tilde X$ are the representations of $p,X$ in the embedding,.

    On an abstract power manifold, this decouples and can be computed elementwise.

    source
    Manifolds.flatMethod
    flat(M::AbstractPowerManifold, p, X)

    use the musical isomorphism to transform the tangent vector X from the tangent space at p on an AbstractPowerManifold M to a cotangent vector. This can be done elementwise for each entry of X (and p).

    source
    Manifolds.sharpMethod
    sharp(M::AbstractPowerManifold, p, ξ::RieszRepresenterCotangentVector)

    Use the musical isomorphism to transform the cotangent vector ξ from the tangent space at p on an AbstractPowerManifold M to a tangent vector. This can be done elementwise for every entry of ξ (and p).

    source
    ManifoldsBase.WeingartenMethod
    Y = Weingarten(M::AbstractPowerManifold, p, X, V)
    +Weingarten!(M::AbstractPowerManifold, Y, p, X, V)

    Since the metric decouples, also the computation of the Weingarten map $\mathcal W_p$ can be computed elementwise on the single elements of the PowerManifold M.

    source
    ManifoldsBase.change_metricMethod
    change_metric(M::AbstractPowerManifold, ::AbstractMetric, p, X)

    Since the metric on a power manifold decouples, the change of metric can be done elementwise.

    source
    ManifoldsBase.change_representerMethod
    change_representer(M::AbstractPowerManifold, ::AbstractMetric, p, X)

    Since the metric on a power manifold decouples, the change of a representer can be done elementwise

    source
    diff --git a/v0.8.79/manifolds/probabilitysimplex.html b/v0.8.79/manifolds/probabilitysimplex.html new file mode 100644 index 0000000000..45be215ad2 --- /dev/null +++ b/v0.8.79/manifolds/probabilitysimplex.html @@ -0,0 +1,26 @@ + +Probability simplex · Manifolds.jl

    The probability simplex

    Manifolds.FisherRaoMetricType
    FisherRaoMetric <: AbstractMetric

    The Fisher-Rao metric or Fisher information metric is a particular Riemannian metric which can be defined on a smooth statistical manifold, i.e., a smooth manifold whose points are probability measures defined on a common probability space.

    See for example the ProbabilitySimplex.

    source
    Manifolds.ProbabilitySimplexType
    ProbabilitySimplex{n,boundary} <: AbstractDecoratorManifold{𝔽}

    The (relative interior of) the probability simplex is the set

    \[Δ^n := \biggl\{ p ∈ ℝ^{n+1}\ \big|\ p_i > 0 \text{ for all } i=1,…,n+1, +\text{ and } ⟨\mathbb{1},p⟩ = \sum_{i=1}^{n+1} p_i = 1\biggr\},\]

    where $\mathbb{1}=(1,…,1)^{\mathrm{T}}∈ ℝ^{n+1}$ denotes the vector containing only ones.

    If boundary is set to :open, then the object represents an open simplex. Otherwise, that is when boundary is set to :closed, the boundary is also included:

    \[\hat{Δ}^n := \biggl\{ p ∈ ℝ^{n+1}\ \big|\ p_i \geq 0 \text{ for all } i=1,…,n+1, +\text{ and } ⟨\mathbb{1},p⟩ = \sum_{i=1}^{n+1} p_i = 1\biggr\},\]

    This set is also called the unit simplex or standard simplex.

    The tangent space is given by

    \[T_pΔ^n = \biggl\{ X ∈ ℝ^{n+1}\ \big|\ ⟨\mathbb{1},X⟩ = \sum_{i=1}^{n+1} X_i = 0 \biggr\}\]

    The manifold is implemented assuming the Fisher-Rao metric for the multinomial distribution, which is equivalent to the induced metric from isometrically embedding the probability simplex in the $n$-sphere of radius 2. The corresponding diffeomorphism $\varphi: \mathbb Δ^n → \mathcal N$, where $\mathcal N \subset 2𝕊^n$ is given by $\varphi(p) = 2\sqrt{p}$.

    This implementation follows the notation in [APSS17].

    Constructor

    ProbabilitySimplex(n::Int; boundary::Symbol=:open)
    source
    Base.expMethod
    exp(M::ProbabilitySimplex, p, X)

    Compute the exponential map on the probability simplex.

    \[\exp_pX = \frac{1}{2}\Bigl(p+\frac{X_p^2}{\lVert X_p \rVert^2}\Bigr) ++ \frac{1}{2}\Bigl(p - \frac{X_p^2}{\lVert X_p \rVert^2}\Bigr)\cos(\lVert X_p\rVert) ++ \frac{1}{\lVert X_p \rVert}\sqrt{p}\sin(\lVert X_p\rVert),\]

    where $X_p = \frac{X}{\sqrt{p}}$, with its division meant elementwise, as well as for the operations $X_p^2$ and $\sqrt{p}$.

    source
    Base.logMethod
    log(M::ProbabilitySimplex, p, q)

    Compute the logarithmic map of p and q on the ProbabilitySimplex M.

    \[\log_pq = \frac{d_{Δ^n}(p,q)}{\sqrt{1-⟨\sqrt{p},\sqrt{q}⟩}}(\sqrt{pq} - ⟨\sqrt{p},\sqrt{q}⟩p),\]

    where $pq$ and $\sqrt{p}$ is meant elementwise.

    source
    Base.randMethod
    rand(::ProbabilitySimplex; vector_at=nothing, σ::Real=1.0)

    When vector_at is nothing, return a random (uniform over the Fisher-Rao metric; that is, uniform with respect to the n-sphere whose positive orthant is mapped to the simplex). point x on the ProbabilitySimplex manifold M according to the isometric embedding into the n-sphere by normalizing the vector length of a sample from a multivariate Gaussian. See [Mar72].

    When vector_at is not nothing, return a (Gaussian) random vector from the tangent space $T_{p}\mathrm{\Delta}^n$by shifting a multivariate Gaussian with standard deviation σ to have a zero component sum.

    source
    ManifoldDiff.riemannian_gradientMethod
    X = riemannian_gradient(M::ProbabilitySimplex{n}, p, Y)
    +riemannian_gradient!(M::ProbabilitySimplex{n}, X, p, Y)

    Given a gradient $Y = \operatorname{grad} \tilde f(p)$ in the embedding $ℝ^{n+1}$ of the ProbabilitySimplex $Δ^n$, this function computes the Riemannian gradient $X = \operatorname{grad} f(p)$ where $f$ is the function $\tilde f$ restricted to the manifold.

    The formula reads

    \[ X = p ⊙ Y - ⟨p, Y⟩p,\]

    where $⊙$ denotes the emelementwise product.

    source
    Manifolds.volume_densityMethod
    volume_density(M::ProbabilitySimplex{N}, p, X) where {N}

    Compute the volume density at point p on ProbabilitySimplex M for tangent vector X. It is computed using isometry with positive orthant of a sphere.

    source
    ManifoldsBase.change_metricMethod
    change_metric(M::ProbabilitySimplex, ::EuclideanMetric, p, X)

    To change the metric, we are looking for a function $c\colon T_pΔ^n \to T_pΔ^n$ such that for all $X,Y ∈ T_pΔ^n$ This can be achieved by rewriting representer change in matrix form as (Diagonal(p) - p * p') * X and taking square root of the matrix

    source
    ManifoldsBase.change_representerMethod
    change_representer(M::ProbabilitySimplex, ::EuclideanMetric, p, X)

    Given a tangent vector with respect to the metric from the embedding, the EuclideanMetric, the representer of a linear functional on the tangent space is adapted as $Z = p .* X .- p .* dot(p, X)$. The first part “compensates” for the divsion by $p$ in the Riemannian metric on the ProbabilitySimplex and the second part performs appropriate projection to keep the vector tangent.

    For details see Proposition 2.3 in [APSS17].

    source
    ManifoldsBase.check_pointMethod
    check_point(M::ProbabilitySimplex, p; kwargs...)

    Check whether p is a valid point on the ProbabilitySimplex M, i.e. is a point in the embedding with positive entries that sum to one The tolerance for the last test can be set using the kwargs....

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::ProbabilitySimplex, p, X; kwargs... )

    Check whether X is a tangent vector to p on the ProbabilitySimplex M, i.e. after check_point(M,p), X has to be of same dimension as p and its elements have to sum to one. The tolerance for the last test can be set using the kwargs....

    source
    ManifoldsBase.innerMethod
    inner(M::ProbabilitySimplex, p, X, Y)

    Compute the inner product of two tangent vectors X, Y from the tangent space $T_pΔ^n$ at p. The formula reads

    \[g_p(X,Y) = \sum_{i=1}^{n+1}\frac{X_iY_i}{p_i}\]

    When M includes boundary, we can just skip coordinates where $p_i$ is equal to 0, see Proposition 2.1 in [AJLS17].

    source
    ManifoldsBase.inverse_retractMethod
    inverse_retract(M::ProbabilitySimplex, p, q, ::SoftmaxInverseRetraction)

    Compute a first order approximation by projection. The formula reads

    \[\operatorname{retr}^{-1}_p q = \bigl( I_{n+1} - \frac{1}{n}\mathbb{1}^{n+1,n+1} \bigr)(\log(q)-\log(p))\]

    where $\mathbb{1}^{m,n}$ is the size (m,n) matrix containing ones, and $\log$ is applied elementwise.

    source
    ManifoldsBase.manifold_dimensionMethod
    manifold_dimension(M::ProbabilitySimplex{n})

    Returns the manifold dimension of the probability simplex in $ℝ^{n+1}$, i.e.

    \[ \dim_{Δ^n} = n.\]

    source
    ManifoldsBase.projectMethod
    project(M::ProbabilitySimplex, p, Y)

    Project Y from the embedding onto the tangent space at p on the ProbabilitySimplex M. The formula reads

    `math \operatorname{proj}_{Δ^n}(p,Y) = Y - \bar{Y} where $\bar{Y}$ denotes mean of $Y$.

    source
    ManifoldsBase.projectMethod
    project(M::ProbabilitySimplex, p)

    project p from the embedding onto the ProbabilitySimplex M. The formula reads

    \[\operatorname{proj}_{Δ^n}(p) = \frac{1}{⟨\mathbb 1,p⟩}p,\]

    where $\mathbb 1 ∈ ℝ$ denotes the vector of ones. Not that this projection is only well-defined if $p$ has positive entries.

    source
    ManifoldsBase.representation_sizeMethod
    representation_size(::ProbabilitySimplex{n})

    Return the representation size of points in the $n$-dimensional probability simplex, i.e. an array size of (n+1,).

    source
    ManifoldsBase.retractMethod
    retract(M::ProbabilitySimplex, p, X, ::SoftmaxRetraction)

    Compute a first order approximation by applying the softmax function. The formula reads

    \[\operatorname{retr}_p X = \frac{p\mathrm{e}^X}{⟨p,\mathrm{e}^X⟩},\]

    where multiplication, exponentiation and division are meant elementwise.

    source

    Euclidean metric

    Base.randMethod
    rand(::MetricManifold{ℝ,<:ProbabilitySimplex,<:EuclideanMetric}; vector_at=nothing, σ::Real=1.0)

    When vector_at is nothing, return a random (uniform) point x on the ProbabilitySimplex with the Euclidean metric manifold M by normalizing independent exponential draws to unit sum, see [Dev86], Theorems 2.1 and 2.2 on p. 207 and 208, respectively.

    When vector_at is not nothing, return a (Gaussian) random vector from the tangent space $T_{p}\mathrm{\Delta}^n$by shifting a multivariate Gaussian with standard deviation σ to have a zero component sum.

    source
    Manifolds.manifold_volumeMethod
    manifold_volume(::MetricManifold{ℝ,<:ProbabilitySimplex{n},<:EuclideanMetric})) where {n}

    Return the volume of the ProbabilitySimplex with the Euclidean metric. The formula reads $\frac{\sqrt{n+1}}{n!}$

    source

    Real probability amplitudes

    An isometric embedding of interior of ProbabilitySimplex in positive orthant of the Sphere is established through functions simplex_to_amplitude and amplitude_to_simplex. Some properties extend to the boundary but not all.

    This embedding isometrically maps the Fisher-Rao metric on the open probability simplex to the sphere of radius 1 with Euclidean metric. More details can be found in Section 2.2 of [AJLS17].

    The name derives from the notion of probability amplitudes in quantum mechanics. They are complex-valued and their squared norm corresponds to probability. This construction restricted to real valued amplitudes results in this embedding.

    Manifolds.amplitude_to_simplexMethod
    amplitude_to_simplex(M::ProbabilitySimplex{N}, p) where {N}

    Convert point (real) probability amplitude p on to a point on ProbabilitySimplex. The formula reads $(p_1^2, p_2^2, …, p_{N+1}^2)$. This is an isometry from the interior of the positive orthant of a sphere to interior of the probability simplex.

    source
    Manifolds.simplex_to_amplitudeMethod
    simplex_to_amplitude(M::ProbabilitySimplex, p)

    Convert point p on ProbabilitySimplex to (real) probability amplitude. The formula reads $(\sqrt{p_1}, \sqrt{p_2}, …, \sqrt{p_{N+1}})$. This is an isometry from the interior of the probability simplex to the interior of the positive orthant of a sphere.

    source

    Literature

    [AJLS17]
    +
    +
    N. Ay, J. Jost, H. V. Lê and L. Schwachhöfer. Information Geometry. Springer Cham (2017).
    +
    [Dev86]
    +
    +
    L. Devroye. Non-Uniform Random Variate Generation. Springer New York, NY (1986).
    +
    [Mar72]
    +
    +
    G. Marsaglia. Choosing a Point from the Surface of a Sphere. Annals of Mathematical Statistics 43, 645–646 (1972).
    +
    [APSS17]
    +
    +
    F. Åström, S. Petra, B. Schmitzer and C. Schnörr. Image Labeling by Assignment. Journal of Mathematical Imaging and Vision 58, 211–238 (2017), arXiv:1603.05285.
    +
    +
    diff --git a/v0.8.79/manifolds/product.html b/v0.8.79/manifolds/product.html new file mode 100644 index 0000000000..223fb1a546 --- /dev/null +++ b/v0.8.79/manifolds/product.html @@ -0,0 +1,10 @@ + +Product manifold · Manifolds.jl

    Product manifold

    Product manifold $\mathcal M = \mathcal{M}_1 × \mathcal{M}_2 × … × \mathcal{M}_n$ of manifolds $\mathcal{M}_1, \mathcal{M}_2, …, \mathcal{M}_n$. Points on the product manifold can be constructed using ProductRepr with canonical projections $Π_i : \mathcal{M} → \mathcal{M}_i$ for $i ∈ 1, 2, …, n$ provided by submanifold_component.

    Manifolds.ProductFVectorDistributionType
    ProductFVectorDistribution([type::VectorBundleFibers], [x], distrs...)

    Generates a random vector at point x from vector space (a fiber of a tangent bundle) of type type using the product distribution of given distributions.

    Vector space type and x can be automatically inferred from distributions distrs.

    source
    Manifolds.ProductManifoldType
    ProductManifold{𝔽,TM<:Tuple} <: AbstractManifold{𝔽}

    Product manifold $M_1 × M_2 × … × M_n$ with product geometry.

    Constructor

    ProductManifold(M_1, M_2, ..., M_n)

    generates the product manifold $M_1 × M_2 × … × M_n$. Alternatively, the same manifold can be contructed using the × operator: M_1 × M_2 × M_3.

    source
    Base.expMethod
    exp(M::ProductManifold, p, X)

    compute the exponential map from p in the direction of X on the ProductManifold M, which is the elementwise exponential map on the internal manifolds that build M.

    source
    Base.getindexMethod
    getindex(p, M::ProductManifold, i::Union{Integer,Colon,AbstractVector})
    +p[M::ProductManifold, i]

    Access the element(s) at index i of a point p on a ProductManifold M by linear indexing. See also Array Indexing in Julia.

    source
    Base.logMethod
    log(M::ProductManifold, p, q)

    Compute the logarithmic map from p to q on the ProductManifold M, which can be computed using the logarithmic maps of the manifolds elementwise.

    source
    Base.randMethod
    rand(M::ProductManifold; parts_kwargs = map(_ -> (;), M.manifolds))

    Return a random point on ProductManifold M. parts_kwargs is a tuple of keyword arguments for rand on each manifold in M.manifolds.

    source
    Base.setindex!Method
    setindex!(q, p, M::ProductManifold, i::Union{Integer,Colon,AbstractVector})
    +q[M::ProductManifold,i...] = p

    set the element [i...] of a point q on a ProductManifold by linear indexing to q. See also Array Indexing in Julia.

    source
    LinearAlgebra.crossMethod
    cross(M, N)
    +cross(M1, M2, M3,...)

    Return the ProductManifold For two AbstractManifolds M and N, where for the case that one of them is a ProductManifold itself, the other is either prepended (if N is a product) or appenden (if M) is. If both are product manifold, they are combined into one product manifold, keeping the order.

    For the case that more than one is a product manifold of these is build with the same approach as above

    source
    LinearAlgebra.normMethod
    norm(M::ProductManifold, p, X)

    Compute the norm of X from the tangent space of p on the ProductManifold, i.e. from the element wise norms the 2-norm is computed.

    source
    ManifoldDiff.riemannian_HessianMethod
    Y = riemannian_Hessian(M::ProductManifold, p, G, H, X)
    +riemannian_Hessian!(M::ProductManifold, Y, p, G, H, X)

    Compute the Riemannian Hessian $\operatorname{Hess} f(p)[X]$ given the Euclidean gradient $∇ f(\tilde p)$ in G and the Euclidean Hessian $∇^2 f(\tilde p)[\tilde X]$ in H, where $\tilde p, \tilde X$ are the representations of $p,X$ in the embedding,.

    On a product manifold, this decouples and can be computed elementwise.

    source
    Manifolds.flatMethod
    flat(M::ProductManifold, p, X::FVector{TangentSpaceType})

    use the musical isomorphism to transform the tangent vector X from the tangent space at p on the ProductManifold M to a cotangent vector. This can be done elementwise for every entry of X (with respect to the corresponding entry in p) separately.

    source
    Manifolds.sharpMethod
    sharp(M::ProductManifold, p, ξ::FVector{CotangentSpaceType})

    Use the musical isomorphism to transform the cotangent vector ξ from the tangent space at p on the ProductManifold M to a tangent vector. This can be done elementwise for every entry of ξ (and p) separately

    source
    Manifolds.submanifoldMethod
    submanifold(M::ProductManifold, i::Val)
    +submanifold(M::ProductManifold, i::AbstractVector)

    Extract the factor of the product manifold M indicated by indices in i. For example, for i equal to Val((1, 3)) the product manifold constructed from the first and the third factor is returned.

    The version with AbstractVector is not type-stable, for better preformance use Val.

    source
    ManifoldsBase.WeingartenMethod
    Y = Weingarten(M::ProductManifold, p, X, V)
    +Weingarten!(M::ProductManifold, Y, p, X, V)

    Since the metric decouples, also the computation of the Weingarten map $\mathcal W_p$ can be computed elementwise on the single elements of the ProductManifold M.

    source
    ManifoldsBase.change_metricMethod
    change_metric(M::ProductManifold, ::AbstractMetric, p, X)

    Since the metric on a product manifold decouples, the change of metric can be done elementwise.

    source
    ManifoldsBase.change_representerMethod
    change_representer(M::ProductManifold, ::AbstractMetric, p, X)

    Since the metric on a product manifold decouples, the change of a representer can be done elementwise

    source
    ManifoldsBase.check_pointMethod
    check_point(M::ProductManifold, p; kwargs...)

    Check whether p is a valid point on the ProductManifold M. If p is not a point on M a CompositeManifoldError.consisting of all error messages of the components, for which the tests fail is returned.

    The tolerance for the last test can be set using the kwargs....

    source
    ManifoldsBase.check_sizeMethod
    check_size(M::ProductManifold, p; kwargs...)

    Check whether p is of valid size on the ProductManifold M. If p has components of wrong size a CompositeManifoldError.consisting of all error messages of the components, for which the tests fail is returned.

    The tolerance for the last test can be set using the kwargs....

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::ProductManifold, p, X; kwargs... )

    Check whether X is a tangent vector to p on the ProductManifold M, i.e. all projections to base manifolds must be respective tangent vectors. If X is not a tangent vector to p on M a CompositeManifoldError.consisting of all error messages of the components, for which the tests fail is returned.

    The tolerance for the last test can be set using the kwargs....

    source
    ManifoldsBase.distanceMethod
    distance(M::ProductManifold, p, q)

    Compute the distance between two points p and q on the ProductManifold M, which is the 2-norm of the elementwise distances on the internal manifolds that build M.

    source
    ManifoldsBase.innerMethod
    inner(M::ProductManifold, p, X, Y)

    compute the inner product of two tangent vectors X, Y from the tangent space at p on the ProductManifold M, which is just the sum of the internal manifolds that build M.

    source
    ManifoldsBase.inverse_retractMethod
    inverse_retract(M::ProductManifold, p, q, m::InverseProductRetraction)

    Compute the inverse retraction from p with respect to q on the ProductManifold M using an InverseProductRetraction, which by default encapsulates a inverse retraction for each manifold of the product. Then this method is performed elementwise, so the encapsulated inverse retraction methods have to be available per factor.

    source
    ManifoldsBase.retractMethod
    retract(M::ProductManifold, p, X, m::ProductRetraction)

    Compute the retraction from p with tangent vector X on the ProductManifold M using an ProductRetraction, which by default encapsulates retractions of the base manifolds. Then this method is performed elementwise, so the encapsulated retractions method has to be one that is available on the manifolds.

    source
    diff --git a/v0.8.79/manifolds/projectivespace.html b/v0.8.79/manifolds/projectivespace.html new file mode 100644 index 0000000000..6a26317cb3 --- /dev/null +++ b/v0.8.79/manifolds/projectivespace.html @@ -0,0 +1,12 @@ + +Projective space · Manifolds.jl

    Projective space

    Manifolds.AbstractProjectiveSpaceType
    AbstractProjectiveSpace{𝔽} <: AbstractDecoratorManifold{𝔽}

    An abstract type to represent a projective space over 𝔽 that is represented isometrically in the embedding.

    source
    Manifolds.ArrayProjectiveSpaceType
    ArrayProjectiveSpace{T<:Tuple,𝔽} <: AbstractProjectiveSpace{𝔽}

    The projective space $𝔽ℙ^{n₁,n₂,…,nᵢ}$ is the manifold of all lines in $𝔽^{n₁,n₂,…,nᵢ}$. The default representation is in the embedding, i.e. as unit (Frobenius) norm matrices in $𝔽^{n₁,n₂,…,nᵢ}$:

    \[𝔽ℙ^{n_1, n_2, …, n_i} := \bigl\{ [p] ⊂ 𝔽^{n_1, n_2, …, n_i} \ \big|\ \lVert p \rVert_{\mathrm{F}} = 1, λ ∈ 𝔽, |λ| = 1, p ∼ p λ \bigr\}.\]

    where $[p]$ is an equivalence class of points $p$, $\sim$ indicates equivalence, and $\lVert ⋅ \rVert_{\mathrm{F}}$ is the Frobenius norm. Note that unlike ProjectiveSpace, the argument for ArrayProjectiveSpace is given by the size of the embedding. This means that ProjectiveSpace(2) and ArrayProjectiveSpace(3) are the same manifold. Additionally, ArrayProjectiveSpace(n,1;field=𝔽) and Grassmann(n,1;field=𝔽) are the same.

    The tangent space at point $p$ is given by

    \[T_p 𝔽ℙ^{n_1, n_2, …, n_i} := \bigl\{ X ∈ 𝔽^{n_1, n_2, …, n_i}\ |\ ⟨p,X⟩_{\mathrm{F}} = 0 \bigr \},\]

    where $⟨⋅,⋅⟩_{\mathrm{F}}$ denotes the (Frobenius) inner product in the embedding $𝔽^{n_1, n_2, …, n_i}$.

    Constructor

    ArrayProjectiveSpace(n₁,n₂,...,nᵢ; field=ℝ)

    Generate the projective space $𝔽ℙ^{n_1, n_2, …, n_i}$, defaulting to the real projective space, where field can also be used to generate the complex- and right-quaternionic projective spaces.

    source
    Manifolds.ProjectiveSpaceType
    ProjectiveSpace{n,𝔽} <: AbstractProjectiveSpace{𝔽}

    The projective space $𝔽ℙ^n$ is the manifold of all lines in $𝔽^{n+1}$. The default representation is in the embedding, i.e. as unit norm vectors in $𝔽^{n+1}$:

    \[𝔽ℙ^n := \bigl\{ [p] ⊂ 𝔽^{n+1} \ \big|\ \lVert p \rVert = 1, λ ∈ 𝔽, |λ| = 1, p ∼ p λ \bigr\},\]

    where $[p]$ is an equivalence class of points $p$, and $∼$ indicates equivalence. For example, the real projective space $ℝℙ^n$ is represented as the unit sphere $𝕊^n$, where antipodal points are considered equivalent.

    The tangent space at point $p$ is given by

    \[T_p 𝔽ℙ^{n} := \bigl\{ X ∈ 𝔽^{n+1}\ \big|\ ⟨p,X⟩ = 0 \bigr \},\]

    where $⟨⋅,⋅⟩$ denotes the inner product in the embedding $𝔽^{n+1}$.

    When $𝔽 = ℍ$, this implementation of $ℍℙ^n$ is the right-quaternionic projective space.

    Constructor

    ProjectiveSpace(n[, field=ℝ])

    Generate the projective space $𝔽ℙ^{n} ⊂ 𝔽^{n+1}$, defaulting to the real projective space $ℝℙ^n$, where field can also be used to generate the complex- and right-quaternionic projective spaces.

    source
    Base.logMethod
    log(M::AbstractProjectiveSpace, p, q)

    Compute the logarithmic map on AbstractProjectiveSpace M$ = 𝔽ℙ^n$, i.e. the tangent vector whose corresponding geodesic starting from p reaches q after time 1 on M. The formula reads

    \[\log_p q = (q λ - \cos θ p) \frac{θ}{\sin θ},\]

    where $θ = \arccos|⟨q, p⟩_{\mathrm{F}}|$ is the distance between $p$ and $q$, $⟨⋅, ⋅⟩_{\mathrm{F}}$ is the Frobenius inner product, and $λ = \frac{⟨q, p⟩_{\mathrm{F}}}{|⟨q, p⟩_{\mathrm{F}}|} ∈ 𝔽$ is the unit scalar that minimizes $d_{𝔽^{n+1}}(p - q λ)$. That is, $q λ$ is the member of the equivalence class $[q]$ that is closest to $p$ in the embedding. As a result, $\exp_p \circ \log_p \colon q ↦ q λ$.

    The logarithmic maps for the real AbstractSphere $𝕊^n$ and the real projective space $ℝℙ^n$ are identical when $p$ and $q$ are in the same hemisphere.

    source
    ManifoldsBase._isapproxMethod
    isapprox(M::AbstractProjectiveSpace, p, q; kwargs...)

    Check that points p and q on the AbstractProjectiveSpace M$=𝔽ℙ^n$ are members of the same equivalence class, i.e. that $p = q λ$ for some element $λ ∈ 𝔽$ with unit absolute value, that is, $|λ| = 1$. This is equivalent to the Riemannian distance being 0.

    source
    ManifoldsBase.check_pointMethod
    check_point(M::AbstractProjectiveSpace, p; kwargs...)

    Check whether p is a valid point on the AbstractProjectiveSpace M, i.e. that it has the same size as elements of the embedding and has unit Frobenius norm. The tolerance for the norm check can be set using the kwargs....

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::AbstractProjectiveSpace, p, X; kwargs... )

    Check whether X is a tangent vector in the tangent space of p on the AbstractProjectiveSpace M, i.e. that X has the same size as elements of the tangent space of the embedding and that the Frobenius inner product $⟨p, X⟩_{\mathrm{F}} = 0$.

    source
    ManifoldsBase.distanceMethod
    distance(M::AbstractProjectiveSpace, p, q)

    Compute the Riemannian distance on AbstractProjectiveSpace M$=𝔽ℙ^n$ between points p and q, i.e.

    \[d_{𝔽ℙ^n}(p, q) = \arccos\bigl| ⟨p, q⟩_{\mathrm{F}} \bigr|.\]

    Note that this definition is similar to that of the AbstractSphere. However, the absolute value ensures that all equivalent p and q have the same pairwise distance.

    source
    ManifoldsBase.get_coordinatesMethod
    get_coordinates(M::AbstractProjectiveSpace, p, X, B::DefaultOrthonormalBasis{ℝ})

    Represent the tangent vector $X$ at point $p$ from the AbstractProjectiveSpace $M = 𝔽ℙ^n$ in an orthonormal basis by unitarily transforming the hyperplane containing $X$, whose normal is $p$, to the hyperplane whose normal is the $x$-axis.

    Given $q = p \overline{λ} + x$, where $λ = \frac{⟨x, p⟩_{\mathrm{F}}}{|⟨x, p⟩_{\mathrm{F}}|}$, $⟨⋅, ⋅⟩_{\mathrm{F}}$ denotes the Frobenius inner product, and $\overline{⋅}$ denotes complex or quaternionic conjugation, the formula for $Y$ is

    \[\begin{pmatrix}0 \\ Y\end{pmatrix} = \left(X - q\frac{2 ⟨q, X⟩_{\mathrm{F}}}{⟨q, q⟩_{\mathrm{F}}}\right)\overline{λ}.\]

    source
    ManifoldsBase.get_vectorMethod
    get_vector(M::AbstractProjectiveSpace, p, X, B::DefaultOrthonormalBasis{ℝ})

    Convert a one-dimensional vector of coefficients $X$ in the basis B of the tangent space at $p$ on the AbstractProjectiveSpace $M=𝔽ℙ^n$ to a tangent vector $Y$ at $p$ by unitarily transforming the hyperplane containing $X$, whose normal is the $x$-axis, to the hyperplane whose normal is $p$.

    Given $q = p \overline{λ} + x$, where $λ = \frac{⟨x, p⟩_{\mathrm{F}}}{|⟨x, p⟩_{\mathrm{F}}|}$, $⟨⋅, ⋅⟩_{\mathrm{F}}$ denotes the Frobenius inner product, and $\overline{⋅}$ denotes complex or quaternionic conjugation, the formula for $Y$ is

    \[Y = \left(X - q\frac{2 \left\langle q, \begin{pmatrix}0 \\ X\end{pmatrix}\right\rangle_{\mathrm{F}}}{⟨q, q⟩_{\mathrm{F}}}\right) λ.\]

    source
    ManifoldsBase.inverse_retractMethod
    inverse_retract(M::AbstractProjectiveSpace, p, q, method::ProjectionInverseRetraction)
    +inverse_retract(M::AbstractProjectiveSpace, p, q, method::PolarInverseRetraction)
    +inverse_retract(M::AbstractProjectiveSpace, p, q, method::QRInverseRetraction)

    Compute the equivalent inverse retraction ProjectionInverseRetraction, PolarInverseRetraction, and QRInverseRetraction on the AbstractProjectiveSpace manifold M$=𝔽ℙ^n$, i.e.

    \[\operatorname{retr}_p^{-1} q = q \frac{1}{⟨p, q⟩_{\mathrm{F}}} - p,\]

    where $⟨⋅, ⋅⟩_{\mathrm{F}}$ is the Frobenius inner product.

    Note that this inverse retraction is equivalent to the three corresponding inverse retractions on Grassmann(n+1,1,𝔽), where the three inverse retractions in this case coincide. For $ℝℙ^n$, it is the same as the ProjectionInverseRetraction on the real Sphere.

    source
    ManifoldsBase.parallel_transport_directionMethod
    parallel_transport_direction(M::AbstractProjectiveSpace, p, X, d)

    Parallel transport a vector X from the tangent space at a point p on the AbstractProjectiveSpace M along the geodesic in the direction indicated by the tangent vector d, i.e.

    \[\mathcal{P}_{\exp_p (d) ← p}(X) = X - \left(p \frac{\sin θ}{θ} + d \frac{1 - \cos θ}{θ^2}\right) ⟨d, X⟩_p,\]

    where $θ = \lVert d \rVert$, and $⟨⋅, ⋅⟩_p$ is the inner product at the point $p$. For the real projective space, this is equivalent to the same vector transport on the real AbstractSphere.

    source
    ManifoldsBase.parallel_transport_toMethod
    parallel_transport_to(M::AbstractProjectiveSpace, p, X, q)

    Parallel transport a vector X from the tangent space at a point p on the AbstractProjectiveSpace M$=𝔽ℙ^n$ to the tangent space at another point q.

    This implementation proceeds by transporting $X$ to $T_{q λ} M$ using the same approach as parallel_transport_direction, where $λ = \frac{⟨q, p⟩_{\mathrm{F}}}{|⟨q, p⟩_{\mathrm{F}}|} ∈ 𝔽$ is the unit scalar that takes $q$ to the member $q λ$ of its equivalence class $[q]$ closest to $p$ in the embedding. It then maps the transported vector from $T_{q λ} M$ to $T_{q} M$. The resulting transport to $T_{q} M$ is

    \[\mathcal{P}_{q ← p}(X) = \left(X - \left(p \frac{\sin θ}{θ} + d \frac{1 - \cos θ}{θ^2}\right) ⟨d, X⟩_p\right) \overline{λ},\]

    where $d = \log_p q$ is the direction of the transport, $θ = \lVert d \rVert_p$ is the distance between $p$ and $q$, and $\overline{⋅}$ denotes complex or quaternionic conjugation.

    source
    ManifoldsBase.projectMethod
    project(M::AbstractProjectiveSpace, p, X)

    Orthogonally project the point X onto the tangent space at p on the AbstractProjectiveSpace M:

    \[\operatorname{proj}_p (X) = X - p⟨p, X⟩_{\mathrm{F}},\]

    where $⟨⋅, ⋅⟩_{\mathrm{F}}$ denotes the Frobenius inner product. For the real AbstractSphere and AbstractProjectiveSpace, this projection is the same.

    source
    ManifoldsBase.projectMethod
    project(M::AbstractProjectiveSpace, p)

    Orthogonally project the point p from the embedding onto the AbstractProjectiveSpace M:

    \[\operatorname{proj}(p) = \frac{p}{\lVert p \rVert}_{\mathrm{F}},\]

    where $\lVert ⋅ \rVert_{\mathrm{F}}$ denotes the Frobenius norm. This is identical to projection onto the AbstractSphere.

    source
    ManifoldsBase.retractMethod
    retract(M::AbstractProjectiveSpace, p, X, method::ProjectionRetraction)
    +retract(M::AbstractProjectiveSpace, p, X, method::PolarRetraction)
    +retract(M::AbstractProjectiveSpace, p, X, method::QRRetraction)

    Compute the equivalent retraction ProjectionRetraction, PolarRetraction, and QRRetraction on the AbstractProjectiveSpace manifold M$=𝔽ℙ^n$, i.e.

    \[\operatorname{retr}_p X = \operatorname{proj}_p(p + X).\]

    Note that this retraction is equivalent to the three corresponding retractions on Grassmann(n+1,1,𝔽), where in this case they coincide. For $ℝℙ^n$, it is the same as the ProjectionRetraction on the real Sphere.

    source
    diff --git a/v0.8.79/manifolds/quotient.html b/v0.8.79/manifolds/quotient.html new file mode 100644 index 0000000000..edb07dcaea --- /dev/null +++ b/v0.8.79/manifolds/quotient.html @@ -0,0 +1,4 @@ + +Quotient manifold · Manifolds.jl

    Quotient manifold

    Manifolds.QuotientManifoldType
    QuotientManifold{M <: AbstractManifold{𝔽}, N} <: AbstractManifold{𝔽}

    Equip a manifold $\mathcal M$ explicitly with the property of being a quotient manifold.

    A manifold $\mathcal M$ is then a a quotient manifold of another manifold $\mathcal N$, i.e. for an equivalence relation $∼$ on $\mathcal N$ we have

    \[ \mathcal M = \mathcal N / ∼ = \bigl\{ [p] : p ∈ \mathcal N \bigr\},\]

    where $[p] ≔ \{ q ∈ \mathcal N : q ∼ p\}$ denotes the equivalence class containing $p$. For more details see Subsection 3.4.1 [AMS08].

    This manifold type models an explicit quotient structure. This should be done if either the default implementation of $\mathcal M$ uses another representation different from the quotient structure or if it provides a (default) quotient structure that is different from the one introduced here.

    Fields

    • manifold – the manifold $\mathcal M$ in the introduction above.
    • total_space – the manifold $\mathcal N$ in the introduction above.

    Constructor

    QuotientManifold(M,N)

    Create a manifold where M is the quotient manifold and Nis its total space.

    source

    Provided functions

    Manifolds.canonical_projectMethod
    canonical_project(M, p)

    Compute the canonical projection $π$ on a manifold $\mathcal M$ that IsQuotientManifold, e.g. a QuotientManifold. The canonical (or natural) projection $π$ from the total space $\mathcal N$ onto $\mathcal M$ given by

    \[ π = π_{\mathcal N, \mathcal M} : \mathcal N → \mathcal M, p ↦ π_{\mathcal N, \mathcal M}(p) = [p].\]

    in other words, this function implicitly assumes, that the total space $\mathcal N$ is given, for example explicitly when M is a QuotientManifold and p is a point on N.

    source
    Manifolds.differential_canonical_projectMethod
    differential_canonical_project(M, p, X)

    Compute the differential of the canonical projection $π$ on a manifold $\mathcal M$ that IsQuotientManifold, e.g. a QuotientManifold. The canonical (or natural) projection $π$ from the total space $\mathcal N$ onto $\mathcal M$, such that its differential

    \[ Dπ(p) : T_p\mathcal N → T_{π(p)}\mathcal M\]

    where again the total space might be implicitly assumed, or explicitly when using a QuotientManifold M. So here p is a point on N and X is from $T_p\mathcal N$.

    source
    Manifolds.get_orbit_actionMethod
    get_orbit_action(M::AbstractDecoratorManifold)

    Return the group action that generates the orbit of an equivalence class of the quotient manifold M for which equivalence classes are orbits of an action of a Lie group. For the case that

    \[\mathcal M = \mathcal N / \mathcal O,\]

    where $\mathcal O$ is a Lie group with its group action generating the orbit.

    source
    Manifolds.horizontal_componentMethod
    horizontal_component(N::AbstractManifold, p, X)

    Compute the horizontal component of tangent vector X at point p in the total space of quotient manifold N.

    source
    Manifolds.horizontal_liftMethod
    horizontal_lift(N::AbstractManifold, q, X)
    +horizontal_lift(::QuotientManifold{𝔽,MT<:AbstractManifold{𝔽},NT<:AbstractManifold}, p, X) where {𝔽}

    Given a point q in total space of quotient manifold N such that $p=π(q)$ is a point on a quotient manifold M (implicitly given for the first case) and a tangent vector X this method computes a tangent vector Y on the horizontal space of $T_q\mathcal N$, i.e. the subspace that is orthogonal to the kernel of $Dπ(q)$.

    source
    Manifolds.vertical_componentMethod
    vertical_component(N::AbstractManifold, p, X)

    Compute the vertical component of tangent vector X at point p in the total space of quotient manifold N.

    source
    diff --git a/v0.8.79/manifolds/rotations.html b/v0.8.79/manifolds/rotations.html new file mode 100644 index 0000000000..53a9f215f2 --- /dev/null +++ b/v0.8.79/manifolds/rotations.html @@ -0,0 +1,15 @@ + +Rotations · Manifolds.jl

    Rotations

    The manifold $\mathrm{SO}(n)$ of orthogonal matrices with determinant $+1$ in $ℝ^{n × n}$, i.e.

    \[\mathrm{SO}(n) = \bigl\{R ∈ ℝ^{n × n} \big| R R^{\mathrm{T}} = +R^{\mathrm{T}}R = I_n, \det(R) = 1 \bigr\}\]

    The Lie group $\mathrm{SO}(n)$ is a subgroup of the orthogonal group $\mathrm{O}(n)$ and also known as the special orthogonal group or the set of rotations group. See also SpecialOrthogonal, which is this manifold equipped with the group operation.

    The tangent space to a point $p ∈ \mathrm{SO}(n)$ is given by

    \[T_p\mathrm{SO}(n) = \{X : X=pY,\qquad Y=-Y^{\mathrm{T}}\},\]

    i.e. all vectors that are a product of a skew symmetric matrix multiplied with $p$.

    Since the orthogonal matrices $\mathrm{SO}(n)$ are a Lie group, tangent vectors can also be represented by elements of the corresponding Lie algebra, which is the tangent space at the identity element. In the notation above, this means we just store the component $Y$ of $X$.

    This convention allows for more efficient operations on tangent vectors. Tangent spaces at different points are different vector spaces.

    Let $L_R: \mathrm{SO}(n) → \mathrm{SO}(n)$ where $R ∈ \mathrm{SO}(n)$ be the left-multiplication by $R$, that is $L_R(S) = RS$. The tangent space at rotation $R$, $T_R \mathrm{SO}(n)$, is related to the tangent space at the identity rotation $I_n$ by the differential of $L_R$ at identity, $(\mathrm{d}L_R)_{I_n} : T_{I_n} \mathrm{SO}(n) → T_R \mathrm{SO}(n)$. To convert the tangent vector representation at the identity rotation $X ∈ T_{I_n} \mathrm{SO}(n)$ (i.e., the default) to the matrix representation of the corresponding tangent vector $Y$ at a rotation $R$ use the embed which implements the following multiplication: $Y = RX ∈ T_R \mathrm{SO}(n)$. You can compare the functions log and exp to see how it works in practice.

    Several common functions are also implemented together with orthogonal and unitary matrices.

    Manifolds.RotationsType
    Rotations{N} <: AbstractManifold{ℝ}

    The manifold of rotation matrices of sice $n × n$, i.e. real-valued orthogonal matrices with determinant $+1$.

    Constructor

    Rotations(n)

    Generate the manifold of $n × n$ rotation matrices.

    source
    ManifoldDiff.riemannian_HessianMethod
    riemannian_Hessian(M::Rotations, p, G, H, X)

    The Riemannian Hessian can be computed by adopting Eq. (5.6) [Ngu23], so very similar to the Stiefel manifold. The only difference is, that here the tangent vectors are stored in the Lie algebra, i.e. the update direction is actually $pX$ instead of just $X$ (in Stiefel). and that means the inverse has to be appliead to the (Euclidean) Hessian to map it into the Lie algebra.

    source
    Manifolds.angles_4d_skew_sym_matrixMethod
    angles_4d_skew_sym_matrix(A)

    The Lie algebra of Rotations(4) in $ℝ^{4 × 4}$, $𝔰𝔬(4)$, consists of $4 × 4$ skew-symmetric matrices. The unique imaginary components of their eigenvalues are the angles of the two plane rotations. This function computes these more efficiently than eigvals.

    By convention, the returned values are sorted in decreasing order (corresponding to the same ordering of angles as cos_angles_4d_rotation_matrix).

    source
    Manifolds.normal_rotation_distributionMethod
    normal_rotation_distribution(M::Rotations, p, σ::Real)

    Return a random point on the manifold Rotations M by generating a (Gaussian) random orthogonal matrix with determinant $+1$. Let

    \[QR = A\]

    be the QR decomposition of a random matrix $A$, then the formula reads

    \[p = QD\]

    where $D$ is a diagonal matrix with the signs of the diagonal entries of $R$, i.e.

    \[D_{ij}=\begin{cases} \operatorname{sgn}(R_{ij}) & \text{if} \; i=j \\ 0 & \, \text{otherwise} \end{cases}.\]

    It can happen that the matrix gets -1 as a determinant. In this case, the first and second columns are swapped.

    The argument p is used to determine the type of returned points.

    source
    ManifoldsBase.WeingartenMethod
    Weingarten(M::Rotations, p, X, V)

    Compute the Weingarten map $\mathcal W_p$ at p on the Stiefel M with respect to the tangent vector $X \in T_p\mathcal M$ and the normal vector $V \in N_p\mathcal M$.

    The formula is due to [AMT13] given by

    \[\mathcal W_p(X,V) = -\frac{1}{2}p\bigl(V^{\mathrm{T}}X - X^\mathrm{T}V\bigr)\]

    source
    ManifoldsBase.inverse_retractMethod
    inverse_retract(M, p, q, ::PolarInverseRetraction)

    Compute a vector from the tangent space $T_p\mathrm{SO}(n)$ of the point p on the Rotations manifold M with which the point q can be reached by the PolarRetraction from the point p after time 1.

    The formula reads

    \[\operatorname{retr}^{-1}_p(q) += -\frac{1}{2}(p^{\mathrm{T}}qs - (p^{\mathrm{T}}qs)^{\mathrm{T}})\]

    where $s$ is the solution to the Sylvester equation

    \[p^{\mathrm{T}}qs + s(p^{\mathrm{T}}q)^{\mathrm{T}} + 2I_n = 0.\]

    source
    ManifoldsBase.inverse_retractMethod
    inverse_retract(M::Rotations, p, q, ::QRInverseRetraction)

    Compute a vector from the tangent space $T_p\mathrm{SO}(n)$ of the point p on the Rotations manifold M with which the point q can be reached by the QRRetraction from the point q after time 1.

    source
    ManifoldsBase.parallel_transport_directionMethod
    parallel_transport_direction(M::Rotations, p, X, d)

    Compute parallel transport of vector X tangent at p on the Rotations manifold in the direction d. The formula, provided in [Ren11], reads:

    \[\mathcal P_{q\gets p}X = q^\mathrm{T}p \operatorname{Exp}(d/2) X \operatorname{Exp}(d/2)\]

    where $q=\exp_p d$.

    The formula simplifies to identity for 2-D rotations.

    source
    ManifoldsBase.projectMethod
    project(M::Rotations, p; check_det = true)

    Project p to the nearest point on manifold M.

    Given the singular value decomposition $p = U Σ V^\mathrm{T}$, with the singular values sorted in descending order, the projection is

    \[\operatorname{proj}_{\mathrm{SO}(n)}(p) = +U\operatorname{diag}\left[1,1,…,\det(U V^\mathrm{T})\right] V^\mathrm{T}\]

    The diagonal matrix ensures that the determinant of the result is $+1$. If p is expected to be almost special orthogonal, then you may avoid this check with check_det = false.

    source
    ManifoldsBase.zero_vectorMethod
    zero_vector(M::Rotations, p)

    Return the zero tangent vector from the tangent space art p on the Rotations as an element of the Lie group, i.e. the zero matrix.

    source

    Literature

    [AMT13]
    +
    + +
    [Ngu23]
    +
    +
    D. Nguyen. Operator-Valued Formulas for Riemannian Gradient and Hessian and Families of Tractable Metrics in Riemannian Optimization. Journal of Optimization Theory and Applications 198, 135–164 (2023), arXiv:2009.10159.
    +
    [Ren11]
    +
    +
    Q. Rentmeesters. A gradient method for geodesic data fitting on some symmetric Riemannian manifolds. In: IEEE Conference on Decision and Control and European Control Conference, 7141–7146 (2011).
    +
    +
    diff --git a/v0.8.79/manifolds/shapespace-c55b3c02.svg b/v0.8.79/manifolds/shapespace-c55b3c02.svg new file mode 100644 index 0000000000..8a1b80853f --- /dev/null +++ b/v0.8.79/manifolds/shapespace-c55b3c02.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v0.8.79/manifolds/shapespace.html b/v0.8.79/manifolds/shapespace.html new file mode 100644 index 0000000000..bd48941a6f --- /dev/null +++ b/v0.8.79/manifolds/shapespace.html @@ -0,0 +1,22 @@ + +Shape spaces · Manifolds.jl

    Shape spaces

    Shape spaces are spaces of $k$ points in $\mathbb{R}^n$ up to simultaneous action of a group on all points. The most commonly encountered are Kendall's pre-shape and shape spaces. In the case of the Kendall's pre-shape spaces the action is translation and scaling. In the case of the Kendall's shape spaces the action is translation, scaling and rotation.

    using Manifolds, Plots
    +
    +M = KendallsShapeSpace(2, 3)
    +# two random point on the shape space
    +p = [
    +    0.4385117672460505 -0.6877826444042382 0.24927087715818771
    +    -0.3830259932279294 0.35347460720654283 0.029551386021386548
    +]
    +q = [
    +    -0.42693314765896473 -0.3268567431952937 0.7537898908542584
    +    0.3054740561061169 -0.18962848284149897 -0.11584557326461796
    +]
    +# let's plot them as triples of points on a plane
    +fig = scatter(p[1,:], p[2,:], label="p", aspect_ratio=:equal)
    +scatter!(fig, q[1,:], q[2,:], label="q")
    +
    +# aligning q to p
    +A = get_orbit_action(M)
    +a = optimal_alignment(A, p, q)
    +rot_q = apply(A, a, q)
    +scatter!(fig, rot_q[1,:], rot_q[2,:], label="q aligned to p")
    Example block output

    A more extensive usage example is available in the hand_gestures.jl tutorial.

    Manifolds.KendallsPreShapeSpaceType
    KendallsPreShapeSpace{n,k} <: AbstractSphere{ℝ}

    Kendall's pre-shape space of $k$ landmarks in $ℝ^n$ represented by n×k matrices. In each row the sum of elements of a matrix is equal to 0. The Frobenius norm of the matrix is equal to 1 [Ken84][Ken89].

    The space can be interpreted as tuples of $k$ points in $ℝ^n$ up to simultaneous translation and scaling of all points, so this can be thought of as a quotient manifold.

    Constructor

    KendallsPreShapeSpace(n::Int, k::Int)

    See also

    KendallsShapeSpace, esp. for the references

    source
    Manifolds.KendallsShapeSpaceType
    KendallsShapeSpace{n,k} <: AbstractDecoratorManifold{ℝ}

    Kendall's shape space, defined as quotient of a KendallsPreShapeSpace (represented by n×k matrices) by the action ColumnwiseMultiplicationAction.

    The space can be interpreted as tuples of $k$ points in $ℝ^n$ up to simultaneous translation and scaling and rotation of all points [Ken84][Ken89].

    This manifold possesses the IsQuotientManifold trait.

    Constructor

    KendallsShapeSpace(n::Int, k::Int)

    References

    source

    Provided functions

    ManifoldsBase.projectMethod
    project(M::KendallsPreShapeSpace, p, X)

    Project tangent vector X at point p from the embedding to KendallsPreShapeSpace by selecting the right element from the tangent space to orthogonal section representing the quotient manifold M. See Section 3.7 of [SK16] for details.

    source
    ManifoldsBase.projectMethod
    project(M::KendallsPreShapeSpace, p)

    Project point p from the embedding to KendallsPreShapeSpace by selecting the right element from the orthogonal section representing the quotient manifold M. See Section 3.7 of [SK16] for details.

    The method computes the mean of the landmarks and moves them to make their mean zero; afterwards the Frobenius norm of the landmarks (as a matrix) is normalised to fix the scaling.

    source
    Base.logMethod
    log(M::KendallsShapeSpace, p, q)

    Compute the logarithmic map on KendallsShapeSpace M. See the [exp](@ref exp(::KendallsShapeSpace, ::Any, ::Any)onential map for more details

    source
    Base.randMethod
    rand(::KendallsShapeSpace; vector_at=nothing)

    When vector_at is nothing, return a random point x on the KendallsShapeSpace manifold M by generating a random point in the embedding.

    When vector_at is not nothing, return a random vector from the tangent space with mean zero and standard deviation σ.

    source
    ManifoldsBase.manifold_dimensionMethod
    manifold_dimension(M::KendallsShapeSpace)

    Return the dimension of the KendallsShapeSpace manifold M. The dimension is given by $n(k - 1) - 1 - n(n - 1)/2$ in the typical case where $k \geq n+1$, and $(k + 1)(k - 2) / 2$ otherwise, unless $k$ is equal to 1, in which case the dimension is 0. See [Ken84] for a discussion of the over-dimensioned case.

    source
    diff --git a/v0.8.79/manifolds/skewhermitian.html b/v0.8.79/manifolds/skewhermitian.html new file mode 100644 index 0000000000..1ba0aa87d3 --- /dev/null +++ b/v0.8.79/manifolds/skewhermitian.html @@ -0,0 +1,3 @@ + +Skew-Hermitian matrices · Manifolds.jl

    Skew-hermitian matrices

    Manifolds.SkewHermitianMatricesType
    SkewHermitianMatrices{n,𝔽} <: AbstractDecoratorManifold{𝔽}

    The AbstractManifold $ \operatorname{SkewHerm}(n)$ consisting of the real- or complex-valued skew-hermitian matrices of size $n × n$, i.e. the set

    \[\operatorname{SkewHerm}(n) = \bigl\{p ∈ 𝔽^{n × n}\ \big|\ p^{\mathrm{H}} = -p \bigr\},\]

    where $\cdot^{\mathrm{H}}$ denotes the Hermitian, i.e. complex conjugate transpose, and the field $𝔽 ∈ \{ ℝ, ℂ, ℍ\}$.

    Though it is slightly redundant, usually the matrices are stored as $n × n$ arrays.

    Note that in this representation, the real-valued part of the diagonal must be zero, which is also reflected in the manifold_dimension.

    Constructor

    SkewHermitianMatrices(n::Int, field::AbstractNumbers=ℝ)

    Generate the manifold of $n × n$ skew-hermitian matrices.

    source
    ManifoldsBase.WeingartenMethod
    Y = Weingarten(M::SkewSymmetricMatrices, p, X, V)
    +Weingarten!(M::SkewSymmetricMatrices, Y, p, X, V)

    Compute the Weingarten map $\mathcal W_p$ at p on the SkewSymmetricMatrices M with respect to the tangent vector $X \in T_p\mathcal M$ and the normal vector $V \in N_p\mathcal M$.

    Since this a flat space by itself, the result is always the zero tangent vector.

    source
    ManifoldsBase.check_pointMethod
    check_point(M::SkewHermitianMatrices{n,𝔽}, p; kwargs...)

    Check whether p is a valid manifold point on the SkewHermitianMatrices M, i.e. whether p is a skew-hermitian matrix of size (n,n) with values from the corresponding AbstractNumbers 𝔽.

    The tolerance for the skew-symmetry of p can be set using kwargs....

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::SkewHermitianMatrices{n}, p, X; kwargs... )

    Check whether X is a tangent vector to manifold point p on the SkewHermitianMatrices M, i.e. X must be a skew-hermitian matrix of size (n,n) and its values have to be from the correct AbstractNumbers. The tolerance for the skew-symmetry of p and X can be set using kwargs....

    source
    ManifoldsBase.manifold_dimensionMethod
    manifold_dimension(M::SkewHermitianMatrices{n,𝔽})

    Return the dimension of the SkewHermitianMatrices matrix M over the number system 𝔽, i.e.

    \[\dim \mathrm{SkewHerm}(n,ℝ) = \frac{n(n+1)}{2} \dim_ℝ 𝔽 - n,\]

    where $\dim_ℝ 𝔽$ is the real_dimension of $𝔽$. The first term corresponds to only the upper triangular elements of the matrix being unique, and the second term corresponds to the constraint that the real part of the diagonal be zero.

    source
    ManifoldsBase.projectMethod
    project(M::SkewHermitianMatrices, p, X)

    Project the matrix X onto the tangent space at p on the SkewHermitianMatrices M,

    \[\operatorname{proj}_p(X) = \frac{1}{2} \bigl( X - X^{\mathrm{H}} \bigr),\]

    where $\cdot^{\mathrm{H}}$ denotes the Hermitian, i.e. complex conjugate transposed.

    source
    ManifoldsBase.projectMethod
    project(M::SkewHermitianMatrices, p)

    Projects p from the embedding onto the SkewHermitianMatrices M, i.e.

    \[\operatorname{proj}_{\operatorname{SkewHerm}(n)}(p) = \frac{1}{2} \bigl( p - p^{\mathrm{H}} \bigr),\]

    where $\cdot^{\mathrm{H}}$ denotes the Hermitian, i.e. complex conjugate transposed.

    source
    diff --git a/v0.8.79/manifolds/spdfixeddeterminant.html b/v0.8.79/manifolds/spdfixeddeterminant.html new file mode 100644 index 0000000000..aeecdd105e --- /dev/null +++ b/v0.8.79/manifolds/spdfixeddeterminant.html @@ -0,0 +1,11 @@ + +SPD, fixed determinant · Manifolds.jl

    Symmetric positive definite matrices of fixed determinant

    Manifolds.SPDFixedDeterminantType
    SPDFixedDeterminant{N,D} <: AbstractDecoratorManifold{ℝ}

    The manifold of symmetric positive definite matrices of fixed determinant $d > 0$, i.e.

    \[\mathcal P_d(n) = +\bigl\{ +p ∈ ℝ^{n × n} \ \big|\ a^\mathrm{T}pa > 0 \text{ for all } a ∈ ℝ^{n}\backslash\{0\} + \text{ and } \det(p) = d +\bigr\}.\]

    This manifold is modelled as a submanifold of SymmetricPositiveDefinite(n).

    These matrices are sometimes also called isochoric, which refers to the interpretation of the matrix representing an ellipsoid. All ellipsoids that represent points on this manifold have the same volume.

    The tangent space is modelled the same as for SymmetricPositiveDefinite(n) and consists of all symmetric matrices with zero trace

    \[ T_p\mathcal P_d(n) = + \bigl\{ + X \in \mathbb R^{n×n} \big|\ X=X^\mathrm{T} \text{ and } \operatorname{tr}(p) = 0 + \bigr\},\]

    since for a constant determinant we require that 0 = D\det(p)[Z] = \det(p)\operatorname{tr}(p^{-1}Z) for all tangent vectors $Z$. Additionally we store the tangent vectors as X=p^{-1}Z, i.e. symmetric matrices.

    Constructor

    SPDFixedDeterminant(n::Int, d::Real=1.0)

    generates the manifold $\mathcal P_d(n) \subset \mathcal P(n)$ of determinant $d$, which defaults to 1.

    source

    This manifold can is a submanifold of the symmetric positive definite matrices and hence inherits most properties therefrom.

    The differences are the functions

    ManifoldsBase.check_vectorMethod
    check_vector(M::SPDFixedDeterminant, p, X; kwargs... )

    Check whether X is a tangent vector to manifold point p on the SPDFixedDeterminant M, i.e. X has to be a tangent vector on SymmetricPositiveDefinite, so a symmetric matrix, and additionally fulfill $\operatorname{tr}(X) = 0$.

    The tolerance for the trace check of X can be set using kwargs..., which influences the isapprox-check.

    source
    ManifoldsBase.projectMethod
    Y = project(M::SPDFixedDeterminant{n}, p, X)
    +project!(M::SPDFixedDeterminant{n}, Y, p, X)

    Project the symmetric matrix X onto the tangent space at p of the (sub-)manifold of s.p.d. matrices of determinant M.d (in place of Y), by setting its diagonal (and hence its trace) to zero.

    source
    ManifoldsBase.projectMethod
    q = project(M::SPDFixedDeterminant{n}, p)
    +project!(M::SPDFixedDeterminant{n}, q, p)

    Project the symmetric positive definite (s.p.d.) matrix p from the embedding onto the (sub-)manifold of s.p.d. matrices of determinant M.d (in place of q).

    The formula reads

    \[q = \Bigl(\frac{d}{\det(p)}\Bigr)^{\frac{1}{n}}p\]

    source
    diff --git a/v0.8.79/manifolds/spectrahedron.html b/v0.8.79/manifolds/spectrahedron.html new file mode 100644 index 0000000000..3c55a262b4 --- /dev/null +++ b/v0.8.79/manifolds/spectrahedron.html @@ -0,0 +1,12 @@ + +Spectrahedron · Manifolds.jl

    Spectrahedron

    Manifolds.SpectrahedronType
    Spectrahedron{N,K} <: AbstractDecoratorManifold{ℝ}

    The Spectrahedron manifold, also known as the set of correlation matrices (symmetric positive semidefinite matrices) of rank $k$ with unit trace.

    \[\begin{aligned} +\mathcal S(n,k) = +\bigl\{p ∈ ℝ^{n × n}\ \big|\ &a^\mathrm{T}pa \geq 0 \text{ for all } a ∈ ℝ^{n},\\ +&\operatorname{tr}(p) = \sum_{i=1}^n p_{ii} = 1,\\ +&\text{and } p = qq^{\mathrm{T}} \text{ for } q \in ℝ^{n × k} +\text{ with } \operatorname{rank}(p) = \operatorname{rank}(q) = k +\bigr\}. +\end{aligned}\]

    This manifold is working solely on the matrices $q$. Note that this $q$ is not unique, indeed for any orthogonal matrix $A$ we have $(qA)(qA)^{\mathrm{T}} = qq^{\mathrm{T}} = p$, so the manifold implemented here is the quotient manifold. The unit trace translates to unit frobenius norm of $q$.

    The tangent space at $p$, denoted $T_p\mathcal E(n,k)$, is also represented by matrices $Y\in ℝ^{n × k}$ and reads as

    \[T_p\mathcal S(n,k) = \bigl\{ +X ∈ ℝ^{n × n}\,|\,X = qY^{\mathrm{T}} + Yq^{\mathrm{T}} +\text{ with } \operatorname{tr}(X) = \sum_{i=1}^{n}X_{ii} = 0 +\bigr\}\]

    endowed with the Euclidean metric from the embedding, i.e. from the $ℝ^{n × k}$

    This manifold was for example investigated in [JBAS10].

    Constructor

    Spectrahedron(n,k)

    generates the manifold $\mathcal S(n,k) \subset ℝ^{n × n}$.

    source
    ManifoldsBase.check_pointMethod
    check_point(M::Spectrahedron, q; kwargs...)

    checks, whether q is a valid reprsentation of a point $p=qq^{\mathrm{T}}$ on the Spectrahedron M, i.e. is a matrix of size (N,K), such that $p$ is symmetric positive semidefinite and has unit trace, i.e. $q$ has to have unit frobenius norm. Since by construction $p$ is symmetric, this is not explicitly checked. Since $p$ is by construction positive semidefinite, this is not checked. The tolerances for positive semidefiniteness and unit trace can be set using the kwargs....

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::Spectrahedron, q, Y; kwargs...)

    Check whether $X = qY^{\mathrm{T}} + Yq^{\mathrm{T}}$ is a tangent vector to $p=qq^{\mathrm{T}}$ on the Spectrahedron M, i.e. atfer check_point of q, Y has to be of same dimension as q and a $X$ has to be a symmetric matrix with trace. The tolerance for the base point check and zero diagonal can be set using the kwargs.... Note that symmetry of $X$ holds by construction and is not explicitly checked.

    source
    ManifoldsBase.projectMethod
    project(M::Spectrahedron, q, Y)

    Project Y onto the tangent space at q, i.e. row-wise onto the Spectrahedron manifold.

    source
    ManifoldsBase.representation_sizeMethod
    representation_size(M::Spectrahedron)

    Return the size of an array representing an element on the Spectrahedron manifold M, i.e. $n × k$, the size of such factor of $p=qq^{\mathrm{T}}$ on $\mathcal M = \mathcal S(n,k)$.

    source
    ManifoldsBase.retractMethod
    retract(M::Spectrahedron, q, Y, ::ProjectionRetraction)

    compute a projection based retraction by projecting $q+Y$ back onto the manifold.

    source

    Literature

    diff --git a/v0.8.79/manifolds/sphere-a2e75fff.svg b/v0.8.79/manifolds/sphere-a2e75fff.svg new file mode 100644 index 0000000000..b8f74bd3f2 --- /dev/null +++ b/v0.8.79/manifolds/sphere-a2e75fff.svg @@ -0,0 +1,2737 @@ + + + + + + + + 2023-09-26T21:24:05.406018 + image/svg+xml + + + Matplotlib v3.7.2, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v0.8.79/manifolds/sphere-fe712381.svg b/v0.8.79/manifolds/sphere-fe712381.svg new file mode 100644 index 0000000000..4950d9e0a9 --- /dev/null +++ b/v0.8.79/manifolds/sphere-fe712381.svg @@ -0,0 +1,2826 @@ + + + + + + + + 2023-09-26T21:24:08.983879 + image/svg+xml + + + Matplotlib v3.7.2, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v0.8.79/manifolds/sphere-fe905472.svg b/v0.8.79/manifolds/sphere-fe905472.svg new file mode 100644 index 0000000000..4cd69d67e2 --- /dev/null +++ b/v0.8.79/manifolds/sphere-fe905472.svg @@ -0,0 +1,2811 @@ + + + + + + + + 2023-09-26T21:24:07.425336 + image/svg+xml + + + Matplotlib v3.7.2, https://matplotlib.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v0.8.79/manifolds/sphere.html b/v0.8.79/manifolds/sphere.html new file mode 100644 index 0000000000..739aa243aa --- /dev/null +++ b/v0.8.79/manifolds/sphere.html @@ -0,0 +1,27 @@ + +Sphere · Manifolds.jl

    Sphere and unit norm arrays

    Manifolds.AbstractSphereType
    AbstractSphere{𝔽} <: AbstractDecoratorManifold{𝔽}

    An abstract type to represent a unit sphere that is represented isometrically in the embedding.

    source

    The classical sphere, i.e. unit norm (real- or complex-valued) vectors can be generated as usual: to create the 2-dimensional sphere (in $ℝ^3$), use Sphere(2) and Sphere(2,ℂ), respectively.

    Manifolds.SphereType
    Sphere{n,𝔽} <: AbstractSphere{𝔽}

    The (unit) sphere manifold $𝕊^{n}$ is the set of all unit norm vectors in $𝔽^{n+1}$. The sphere is represented in the embedding, i.e.

    \[𝕊^{n} := \bigl\{ p \in 𝔽^{n+1}\ \big|\ \lVert p \rVert = 1 \bigr\}\]

    where $𝔽\in\{ℝ,ℂ,ℍ\}$. Note that compared to the ArraySphere, here the argument n of the manifold is the dimension of the manifold, i.e. $𝕊^{n} ⊂ 𝔽^{n+1}$, $n\in ℕ$.

    The tangent space at point $p$ is given by

    \[T_p𝕊^{n} := \bigl\{ X ∈ 𝔽^{n+1}\ |\ \Re(⟨p,X⟩) = 0 \bigr \},\]

    where $𝔽\in\{ℝ,ℂ,ℍ\}$ and $⟨\cdot,\cdot⟩$ denotes the inner product in the embedding $𝔽^{n+1}$.

    For $𝔽=ℂ$, the manifold is the complex sphere, written $ℂ𝕊^n$, embedded in $ℂ^{n+1}$. $ℂ𝕊^n$ is the complexification of the real sphere $𝕊^{2n+1}$. Likewise, the quaternionic sphere $ℍ𝕊^n$ is the quaternionification of the real sphere $𝕊^{4n+3}$. Consequently, $ℂ𝕊^0$ is equivalent to $𝕊^1$ and Circle, while $ℂ𝕊^1$ and $ℍ𝕊^0$ are equivalent to $𝕊^3$, though with different default representations.

    This manifold is modeled as a special case of the more general case, i.e. as an embedded manifold to the Euclidean, and several functions like the inner product and the zero_vector are inherited from the embedding.

    Constructor

    Sphere(n[, field=ℝ])

    Generate the (real-valued) sphere $𝕊^{n} ⊂ ℝ^{n+1}$, where field can also be used to generate the complex- and quaternionic-valued sphere.

    source

    For the higher-dimensional arrays, for example unit (Frobenius) norm matrices, the manifold is generated using the size of the matrix. To create the unit sphere of $3×2$ real-valued matrices, write ArraySphere(3,2) and the complex case is done – as for the Euclidean case – with an keyword argument ArraySphere(3,2; field = ℂ). This case also covers the classical sphere as a special case, but you specify the size of the vectors/embedding instead: The 2-sphere can here be generated ArraySphere(3).

    Manifolds.ArraySphereType
    ArraySphere{T<:Tuple,𝔽} <: AbstractSphere{𝔽}

    The (unit) sphere manifold $𝕊^{n₁,n₂,...,nᵢ}$ is the set of all unit (Frobenius) norm elements of $𝔽^{n₁,n₂,...,nᵢ}$, where 𝔽\in{ℝ,ℂ,ℍ}. The generalized sphere is represented in the embedding, and supports arbitrary sized arrays or in other words arbitrary tensors of unit norm. The set formally reads

    \[𝕊^{n_1, n_2, …, n_i} := \bigl\{ p \in 𝔽^{n_1, n_2, …, n_i}\ \big|\ \lVert p \rVert = 1 \bigr\}\]

    where $𝔽\in\{ℝ,ℂ,ℍ\}$. Setting $i=1$ and $𝔽=ℝ$ this simplifies to unit vectors in $ℝ^n$, see Sphere for this special case. Note that compared to this classical case, the argument for the generalized case here is given by the dimension of the embedding. This means that Sphere(2) and ArraySphere(3) are the same manifold.

    The tangent space at point $p$ is given by

    \[T_p 𝕊^{n_1, n_2, …, n_i} := \bigl\{ X ∈ 𝔽^{n_1, n_2, …, n_i}\ |\ \Re(⟨p,X⟩) = 0 \bigr \},\]

    where $𝔽\in\{ℝ,ℂ,ℍ\}$ and $⟨\cdot,\cdot⟩$ denotes the (Frobenius) inner product in the embedding $𝔽^{n_1, n_2, …, n_i}$.

    This manifold is modeled as an embedded manifold to the Euclidean, i.e. several functions like the inner product and the zero_vector are inherited from the embedding.

    Constructor

    ArraySphere(n₁,n₂,...,nᵢ; field=ℝ)

    Generate sphere in $𝔽^{n_1, n_2, …, n_i}$, where $𝔽$ defaults to the real-valued case $ℝ$.

    source

    There is also one atlas available on the sphere.

    Manifolds.StereographicAtlasType
    StereographicAtlas()

    The stereographic atlas of $S^n$ with two charts: one with the singular point (-1, 0, ..., 0) (called :north) and one with the singular point (1, 0, ..., 0) (called :south).

    source

    Functions on unit spheres

    Base.expMethod
    exp(M::AbstractSphere, p, X)

    Compute the exponential map from p in the tangent direction X on the AbstractSphere M by following the great arc eminating from p in direction X.

    \[\exp_p X = \cos(\lVert X \rVert_p)p + \sin(\lVert X \rVert_p)\frac{X}{\lVert X \rVert_p},\]

    where $\lVert X \rVert_p$ is the norm on the tangent space at p of the AbstractSphere M.

    source
    Base.logMethod
    log(M::AbstractSphere, p, q)

    Compute the logarithmic map on the AbstractSphere M, i.e. the tangent vector, whose geodesic starting from p reaches q after time 1. The formula reads for $x ≠ -y$

    \[\log_p q = d_{𝕊}(p,q) \frac{q-\Re(⟨p,q⟩) p}{\lVert q-\Re(⟨p,q⟩) p \rVert_2},\]

    and a deterministic choice from the set of tangent vectors is returned if $x=-y$, i.e. for opposite points.

    source
    Manifolds.local_metricMethod
    local_metric(M::Sphere{n}, p, ::DefaultOrthonormalBasis)

    return the local representation of the metric in a DefaultOrthonormalBasis, namely the diagonal matrix of size $n×n$ with ones on the diagonal, since the metric is obtained from the embedding by restriction to the tangent space $T_p\mathcal M$ at $p$.

    source
    Manifolds.volume_densityMethod
    volume_density(M::AbstractSphere{ℝ}, p, X)

    Compute volume density function of a sphere, i.e. determinant of the differential of exponential map exp(M, p, X). The formula reads $(\sin(\lVert X\rVert)/\lVert X\rVert)^(n-1)$ where n is the dimension of M. It is derived from Eq. (4.1) in [CLLD22].

    source
    ManifoldsBase.WeingartenMethod
    Y = Weingarten(M::Sphere, p, X, V)
    +Weingarten!(M::Sphere, Y, p, X, V)

    Compute the Weingarten map $\mathcal W_p$ at p on the Sphere M with respect to the tangent vector $X \in T_p\mathcal M$ and the normal vector $V \in N_p\mathcal M$.

    The formula is due to [AMT13] given by

    \[\mathcal W_p(X,V) = -Xp^{\mathrm{T}}V\]

    source
    ManifoldsBase.check_pointMethod
    check_point(M::AbstractSphere, p; kwargs...)

    Check whether p is a valid point on the AbstractSphere M, i.e. is a point in the embedding of unit length. The tolerance for the last test can be set using the kwargs....

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::AbstractSphere, p, X; kwargs... )

    Check whether X is a tangent vector to p on the AbstractSphere M, i.e. after check_point(M,p), X has to be of same dimension as p and orthogonal to p. The tolerance for the last test can be set using the kwargs....

    source
    ManifoldsBase.distanceMethod
    distance(M::AbstractSphere, p, q)

    Compute the geodesic distance betweeen p and q on the AbstractSphere M. The formula is given by the (shorter) great arc length on the (or a) great circle both p and q lie on.

    \[d_{𝕊}(p,q) = \arccos(\Re(⟨p,q⟩)).\]

    source
    ManifoldsBase.get_coordinatesMethod
    get_coordinates(M::AbstractSphere{ℝ}, p, X, B::DefaultOrthonormalBasis)

    Represent the tangent vector X at point p from the AbstractSphere M in an orthonormal basis by rotating the hyperplane containing X to a hyperplane whose normal is the $x$-axis.

    Given $q = p λ + x$, where $λ = \operatorname{sgn}(⟨x, p⟩)$, and $⟨⋅, ⋅⟩_{\mathrm{F}}$ denotes the Frobenius inner product, the formula for $Y$ is

    \[\begin{pmatrix}0 \\ Y\end{pmatrix} = X - q\frac{2 ⟨q, X⟩_{\mathrm{F}}}{⟨q, q⟩_{\mathrm{F}}}.\]

    source
    ManifoldsBase.get_vectorMethod
    get_vector(M::AbstractSphere{ℝ}, p, X, B::DefaultOrthonormalBasis)

    Convert a one-dimensional vector of coefficients X in the basis B of the tangent space at p on the AbstractSphere M to a tangent vector Y at p by rotating the hyperplane containing X, whose normal is the $x$-axis, to the hyperplane whose normal is p.

    Given $q = p λ + x$, where $λ = \operatorname{sgn}(⟨x, p⟩)$, and $⟨⋅, ⋅⟩_{\mathrm{F}}$ denotes the Frobenius inner product, the formula for $Y$ is

    \[Y = X - q\frac{2 \left\langle q, \begin{pmatrix}0 \\ X\end{pmatrix}\right\rangle_{\mathrm{F}}}{⟨q, q⟩_{\mathrm{F}}}.\]

    source
    ManifoldsBase.inverse_retractMethod
    inverse_retract(M::AbstractSphere, p, q, ::ProjectionInverseRetraction)

    Compute the inverse of the projection based retraction on the AbstractSphere M, i.e. rearranging $p+X = q\lVert p+X\rVert_2$ yields since $\Re(⟨p,X⟩) = 0$ and when $d_{𝕊^2}(p,q) ≤ \frac{π}{2}$ that

    \[\operatorname{retr}_p^{-1}(q) = \frac{q}{\Re(⟨p, q⟩)} - p.\]

    source
    ManifoldsBase.parallel_transport_toMethod
    parallel_transport_to(M::AbstractSphere, p, X, q)

    Compute the parallel transport on the Sphere of the tangent vector X at p to q, provided, the geodesic between p and q is unique. The formula reads

    \[P_{p←q}(X) = X - \frac{\Re(⟨\log_p q,X⟩_p)}{d^2_𝕊(p,q)} +\bigl(\log_p q + \log_q p \bigr).\]

    source
    ManifoldsBase.projectMethod
    project(M::AbstractSphere, p, X)

    Project the point X onto the tangent space at p on the Sphere M.

    \[\operatorname{proj}_{p}(X) = X - \Re(⟨p, X⟩)p\]

    source
    ManifoldsBase.projectMethod
    project(M::AbstractSphere, p)

    Project the point p from the embedding onto the Sphere M.

    \[\operatorname{proj}(p) = \frac{p}{\lVert p \rVert},\]

    where $\lVert\cdot\rVert$ denotes the usual 2-norm for vectors if $m=1$ and the Frobenius norm for the case $m>1$.

    source
    ManifoldsBase.retractMethod
    retract(M::AbstractSphere, p, X, ::ProjectionRetraction)

    Compute the retraction that is based on projection, i.e.

    \[\operatorname{retr}_p(X) = \frac{p+X}{\lVert p+X \rVert_2}\]

    source
    ManifoldsBase.riemann_tensorMethod
    riemann_tensor(M::AbstractSphere{ℝ}, p, X, Y, Z)

    Compute the Riemann tensor $R(X,Y)Z$ at point p on AbstractSphere M. The formula reads [MF12] (though note that a different convention is used in that paper than in Manifolds.jl):

    \[R(X,Y)Z = \langle Z, Y \rangle X - \langle Z, X \rangle Y\]

    source

    Visualization on Sphere{2,ℝ}

    You can visualize both points and tangent vectors on the sphere.

    Note

    There seems to be no unified way to draw spheres in the backends of Plots.jl. This recipe currently uses the seriestype wireframe and surface, which does not yet work with the default backend GR.

    In general you can plot the surface of the hyperboloid either as wireframe (wireframe=true) additionally specifying wires (or wires_x and wires_y) to change the density of the wires and a wireframe_color for their color. The same holds for the plot as a surface (which is false by default) and its surface_resolution (or surface_resolution_lat or surface_resolution_lon) and a surface_color.

    using Manifolds, Plots
    +pythonplot()
    +M = Sphere(2)
    +pts = [ [1.0, 0.0, 0.0], [0.0, -1.0, 0.0], [0.0, 0.0, 1.0], [1.0, 0.0, 0.0] ]
    +scene = plot(M, pts; wireframe_color=colorant"#CCCCCC", markersize=10)
    Example block output

    which scatters our points. We can also draw connecting geodesics, which here is a geodesic triangle. Here we discretize each geodesic with 100 points along the geodesic. The default value is geodesic_interpolation=-1 which switches to scatter plot of the data.

    plot!(scene, M, pts; wireframe=false, geodesic_interpolation=100, linewidth=2)
    Example block output

    And we can also add tangent vectors, for example tangents pointing towards the geometric center of given points.

    pts2 =  [ [1.0, 0.0, 0.0], [0.0, -1.0, 0.0], [0.0, 0.0, 1.0] ]
    +p3 = 1/sqrt(3) .* [1.0, -1.0, 1.0]
    +vecs = log.(Ref(M), pts2, Ref(p3))
    +plot!(scene, M, pts2, vecs; wireframe = false, linewidth=1.5)
    Example block output

    Literature

    [AMT13]
    +
    + +
    [CLLD22]
    +
    +
    E. Chevallier, D. Li, Y. Lu and D. B. Dunson. Exponential-wrapped distributions on symmetric spaces. ArXiv Preprint (2022).
    +
    [MF12]
    +
    +
    P. Muralidharan and P. T. Fletcher. Sasaki metrics for analysis of longitudinal data on manifolds. In: 2012 IEEE Conference on Computer Vision and Pattern Recognition (2012).
    +
    +
    diff --git a/v0.8.79/manifolds/spheresymmetricmatrices.html b/v0.8.79/manifolds/spheresymmetricmatrices.html new file mode 100644 index 0000000000..1c514bd7a0 --- /dev/null +++ b/v0.8.79/manifolds/spheresymmetricmatrices.html @@ -0,0 +1,5 @@ + +Unit-norm symmetric matrices · Manifolds.jl

    Unit-norm symmetric matrices

    Manifolds.SphereSymmetricMatricesType
    SphereSymmetricMatrices{n,𝔽} <: AbstractEmbeddedManifold{ℝ,TransparentIsometricEmbedding}

    The AbstractManifold consisting of the $n × n$ symmetric matrices of unit Frobenius norm, i.e.

    \[\mathcal{S}_{\text{sym}} :=\bigl\{p ∈ 𝔽^{n × n}\ \big|\ p^{\mathrm{H}} = p, \lVert p \rVert = 1 \bigr\},\]

    where $\cdot^{\mathrm{H}}$ denotes the Hermitian, i.e. complex conjugate transpose, and the field $𝔽 ∈ \{ ℝ, ℂ\}$.

    Constructor

    SphereSymmetricMatrices(n[, field=ℝ])

    Generate the manifold of n-by-n symmetric matrices of unit Frobenius norm.

    source
    ManifoldsBase.check_pointMethod
    check_point(M::SphereSymmetricMatrices{n,𝔽}, p; kwargs...)

    Check whether the matrix is a valid point on the SphereSymmetricMatrices M, i.e. is an n-by-n symmetric matrix of unit Frobenius norm.

    The tolerance for the symmetry of p can be set using kwargs....

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::SphereSymmetricMatrices{n,𝔽}, p, X; kwargs... )

    Check whether X is a tangent vector to manifold point p on the SphereSymmetricMatrices M, i.e. X has to be a symmetric matrix of size (n,n) of unit Frobenius norm.

    The tolerance for the symmetry of p and X can be set using kwargs....

    source
    ManifoldsBase.manifold_dimensionMethod
    manifold_dimension(M::SphereSymmetricMatrices{n,𝔽})

    Return the manifold dimension of the SphereSymmetricMatrices n-by-n symmetric matrix M of unit Frobenius norm over the number system 𝔽, i.e.

    \[\begin{aligned} +\dim(\mathcal{S}_{\text{sym}})(n,ℝ) &= \frac{n(n+1)}{2} - 1,\\ +\dim(\mathcal{S}_{\text{sym}})(n,ℂ) &= 2\frac{n(n+1)}{2} - n -1. +\end{aligned}\]

    source
    ManifoldsBase.projectMethod
    project(M::SphereSymmetricMatrices, p, X)

    Project the matrix X onto the tangent space at p on the SphereSymmetricMatrices M, i.e.

    \[\operatorname{proj}_p(X) = \frac{X + X^{\mathrm{H}}}{2} - ⟨p, \frac{X + X^{\mathrm{H}}}{2}⟩p,\]

    where $\cdot^{\mathrm{H}}$ denotes the Hermitian, i.e. complex conjugate transposed.

    source
    ManifoldsBase.projectMethod
    project(M::SphereSymmetricMatrices, p)

    Projects p from the embedding onto the SphereSymmetricMatrices M, i.e.

    \[\operatorname{proj}_{\mathcal{S}_{\text{sym}}}(p) = \frac{1}{2} \bigl( p + p^{\mathrm{H}} \bigr),\]

    where $\cdot^{\mathrm{H}}$ denotes the Hermitian, i.e. complex conjugate transposed.

    source
    diff --git a/v0.8.79/manifolds/stiefel.html b/v0.8.79/manifolds/stiefel.html new file mode 100644 index 0000000000..c05af32998 --- /dev/null +++ b/v0.8.79/manifolds/stiefel.html @@ -0,0 +1,128 @@ + +Stiefel · Manifolds.jl

    Stiefel

    Common and metric independent functions

    Manifolds.StiefelType
    Stiefel{n,k,𝔽} <: AbstractDecoratorManifold{𝔽}

    The Stiefel manifold consists of all $n × k$, $n ≥ k$ unitary matrices, i.e.

    \[\operatorname{St}(n,k) = \bigl\{ p ∈ 𝔽^{n × k}\ \big|\ p^{\mathrm{H}}p = I_k \bigr\},\]

    where $𝔽 ∈ \{ℝ, ℂ\}$, $\cdot^{\mathrm{H}}$ denotes the complex conjugate transpose or Hermitian, and $I_k ∈ ℝ^{k × k}$ denotes the $k × k$ identity matrix.

    The tangent space at a point $p ∈ \mathcal M$ is given by

    \[T_p \mathcal M = \{ X ∈ 𝔽^{n × k} : p^{\mathrm{H}}X + \overline{X^{\mathrm{H}}p} = 0_k\},\]

    where $0_k$ is the $k × k$ zero matrix and $\overline{\cdot}$ the (elementwise) complex conjugate.

    This manifold is modeled as an embedded manifold to the Euclidean, i.e. several functions like the inner product and the zero_vector are inherited from the embedding.

    The manifold is named after Eduard L. Stiefel (1909–1978).

    Constructor

    Stiefel(n, k, field = ℝ)

    Generate the (real-valued) Stiefel manifold of $n × k$ dimensional orthonormal matrices.

    source
    Base.randMethod
    rand(::Stiefel; vector_at=nothing, σ::Real=1.0)

    When vector_at is nothing, return a random (Gaussian) point x on the Stiefel manifold M by generating a (Gaussian) matrix with standard deviation σ and return the orthogonalized version, i.e. return the Q component of the QR decomposition of the random matrix of size $n×k$.

    When vector_at is not nothing, return a (Gaussian) random vector from the tangent space $T_{vector\_at}\mathrm{St}(n,k)$ with mean zero and standard deviation σ by projecting a random Matrix onto the tangent vector at vector_at.

    source
    Manifolds.uniform_distributionMethod
    uniform_distribution(M::Stiefel{n,k,ℝ}, p)

    Uniform distribution on given (real-valued) Stiefel M. Specifically, this is the normalized Haar and Hausdorff measure on M. Generated points will be of similar type as p.

    The implementation is based on Section 2.5.1 in [Chi03]; see also Theorem 2.2.1(iii) in [Chi03].

    source
    ManifoldsBase.change_metricMethod
    change_metric(M::Stiefel, ::EuclideanMetric, p X)

    Change X to the corresponding vector with respect to the metric of the Stiefel M, which is just the identity, since the manifold is isometrically embedded.

    source
    ManifoldsBase.change_representerMethod
    change_representer(M::Stiefel, ::EuclideanMetric, p, X)

    Change X to the corresponding representer of a cotangent vector at p. Since the Stiefel manifold M, is isometrically embedded, this is the identity

    source
    ManifoldsBase.check_pointMethod
    check_point(M::Stiefel, p; kwargs...)

    Check whether p is a valid point on the Stiefel M=$\operatorname{St}(n,k)$, i.e. that it has the right AbstractNumbers type and $p^{\mathrm{H}}p$ is (approximately) the identity, where $\cdot^{\mathrm{H}}$ is the complex conjugate transpose. The settings for approximately can be set with kwargs....

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::Stiefel, p, X; kwargs...)

    Checks whether X is a valid tangent vector at p on the Stiefel M=$\operatorname{St}(n,k)$, i.e. the AbstractNumbers fits and it (approximately) holds that $p^{\mathrm{H}}X + \overline{X^{\mathrm{H}}p} = 0$, where $\cdot^{\mathrm{H}}$ denotes the Hermitian and $\overline{\cdot}$ the (elementwise) complex conjugate. The settings for approximately can be set with kwargs....

    source
    ManifoldsBase.inverse_retractMethod
    inverse_retract(M::Stiefel, p, q, ::PolarInverseRetraction)

    Compute the inverse retraction based on a singular value decomposition for two points p, q on the Stiefel manifold M. This follows the folloing approach: From the Polar retraction we know that

    \[\operatorname{retr}_p^{-1}q = qs - t\]

    if such a symmetric positive definite $k × k$ matrix exists. Since $qs - t$ is also a tangent vector at $p$ we obtain

    \[p^{\mathrm{H}}qs + s(p^{\mathrm{H}}q)^{\mathrm{H}} + 2I_k = 0,\]

    which can either be solved by a Lyapunov approach or a continuous-time algebraic Riccati equation.

    This implementation follows the Lyapunov approach.

    source
    ManifoldsBase.inverse_retractMethod
    inverse_retract(M::Stiefel, p, q, ::QRInverseRetraction)

    Compute the inverse retraction based on a qr decomposition for two points p, q on the Stiefel manifold M and return the resulting tangent vector in X. The computation follows Algorithm 1 in [KFT13].

    source
    ManifoldsBase.manifold_dimensionMethod
    manifold_dimension(M::Stiefel)

    Return the dimension of the Stiefel manifold M=$\operatorname{St}(n,k,𝔽)$. The dimension is given by

    \[\begin{aligned} +\dim \mathrm{St}(n, k, ℝ) &= nk - \frac{1}{2}k(k+1)\\ +\dim \mathrm{St}(n, k, ℂ) &= 2nk - k^2\\ +\dim \mathrm{St}(n, k, ℍ) &= 4nk - k(2k-1) +\end{aligned}\]

    source
    ManifoldsBase.retractMethod
    retract(::Stiefel, p, X, ::CayleyRetraction)

    Compute the retraction on the Stiefel that is based on the Cayley transform[Zhu16]. Using

    \[ W_{p,X} = \operatorname{P}_pXp^{\mathrm{H}} - pX^{\mathrm{H}}\operatorname{P_p} + \quad\text{where} + \operatorname{P}_p = I - \frac{1}{2}pp^{\mathrm{H}}\]

    the formula reads

    \[ \operatorname{retr}_pX = \Bigl(I - \frac{1}{2}W_{p,X}\Bigr)^{-1}\Bigl(I + \frac{1}{2}W_{p,X}\Bigr)p.\]

    It is implemented as the case $m=1$ of the PadeRetraction.

    source
    ManifoldsBase.retractMethod
    retract(M::Stiefel, p, X, ::PadeRetraction{m})

    Compute the retraction on the Stiefel manifold M based on the Padé approximation of order $m$ [ZD18]. Let $p_m$ and $q_m$ be defined for any matrix $A ∈ ℝ^{n×x}$ as

    \[ p_m(A) = \sum_{k=0}^m \frac{(2m-k)!m!}{(2m)!(m-k)!}\frac{A^k}{k!}\]

    and

    \[ q_m(A) = \sum_{k=0}^m \frac{(2m-k)!m!}{(2m)!(m-k)!}\frac{(-A)^k}{k!}\]

    respectively. Then the Padé approximation (of the matrix exponential $\exp(A)$) reads

    \[ r_m(A) = q_m(A)^{-1}p_m(A)\]

    Defining further

    \[ W_{p,X} = \operatorname{P}_pXp^{\mathrm{H}} - pX^{\mathrm{H}}\operatorname{P_p} + \quad\text{where } + \operatorname{P}_p = I - \frac{1}{2}pp^{\mathrm{H}}\]

    the retraction reads

    \[ \operatorname{retr}_pX = r_m(W_{p,X})p\]

    source
    ManifoldsBase.retractMethod
    retract(M::Stiefel, p, X, ::PolarRetraction)

    Compute the SVD-based retraction PolarRetraction on the Stiefel manifold M. With $USV = p + X$ the retraction reads

    \[\operatorname{retr}_p X = U\bar{V}^\mathrm{H}.\]

    source
    ManifoldsBase.retractMethod
    retract(M::Stiefel, p, X, ::QRRetraction)

    Compute the QR-based retraction QRRetraction on the Stiefel manifold M. With $QR = p + X$ the retraction reads

    \[\operatorname{retr}_p X = QD,\]

    where $D$ is a $n × k$ matrix with

    \[D = \operatorname{diag}\bigl(\operatorname{sgn}(R_{ii}+0,5)_{i=1}^k \bigr),\]

    where $\operatorname{sgn}(p) = \begin{cases} 1 & \text{ for } p > 0,\\ +0 & \text{ for } p = 0,\\ +-1& \text{ for } p < 0. \end{cases}$

    source
    ManifoldsBase.vector_transport_directionMethod
    vector_transport_direction(::Stiefel, p, X, d, ::DifferentiatedRetractionVectorTransport{CayleyRetraction})

    Compute the vector transport given by the differentiated retraction of the CayleyRetraction, cf. [Zhu16] Equation (17).

    The formula reads

    \[\operatorname{T}_{p,d}(X) = +\Bigl(I - \frac{1}{2}W_{p,d}\Bigr)^{-1}W_{p,X}\Bigl(I - \frac{1}{2}W_{p,d}\Bigr)^{-1}p,\]

    with

    \[ W_{p,X} = \operatorname{P}_pXp^{\mathrm{H}} - pX^{\mathrm{H}}\operatorname{P_p} + \quad\text{where } + \operatorname{P}_p = I - \frac{1}{2}pp^{\mathrm{H}}\]

    Since this is the differentiated retraction as a vector transport, the result will be in the tangent space at $q=\operatorname{retr}_p(d)$ using the CayleyRetraction.

    source
    ManifoldsBase.vector_transport_directionMethod
    vector_transport_direction(M::Stiefel, p, X, d, DifferentiatedRetractionVectorTransport{PolarRetraction})

    Compute the vector transport by computing the push forward of retract(::Stiefel, ::Any, ::Any, ::PolarRetraction) Section 3.5 of [Zhu16]:

    \[T_{p,d}^{\text{Pol}}(X) = q*Λ + (I-qq^{\mathrm{T}})X(1+d^\mathrm{T}d)^{-\frac{1}{2}},\]

    where $q = \operatorname{retr}^{\mathrm{Pol}}_p(d)$, and $Λ$ is the unique solution of the Sylvester equation

    \[ Λ(I+d^\mathrm{T}d)^{\frac{1}{2}} + (I + d^\mathrm{T}d)^{\frac{1}{2}} = q^\mathrm{T}X - X^\mathrm{T}q\]

    source
    ManifoldsBase.vector_transport_directionMethod
    vector_transport_direction(M::Stiefel, p, X, d, DifferentiatedRetractionVectorTransport{QRRetraction})

    Compute the vector transport by computing the push forward of the retract(::Stiefel, ::Any, ::Any, ::QRRetraction), See [AMS08], p. 173, or Section 3.5 of [Zhu16].

    \[T_{p,d}^{\text{QR}}(X) = q*\rho_{\mathrm{s}}(q^\mathrm{T}XR^{-1}) + (I-qq^{\mathrm{T}})XR^{-1},\]

    where $q = \operatorname{retr}^{\mathrm{QR}}_p(d)$, $R$ is the $R$ factor of the QR decomposition of $p + d$, and

    \[\bigl( \rho_{\mathrm{s}}(A) \bigr)_{ij} += \begin{cases} +A_{ij}&\text{ if } i > j\\ +0 \text{ if } i = j\\ +-A_{ji} \text{ if } i < j.\\ +\end{cases}\]

    source
    ManifoldsBase.vector_transport_toMethod
    vector_transport_to(M::Stiefel, p, X, q, DifferentiatedRetractionVectorTransport{PolarRetraction})

    Compute the vector transport by computing the push forward of the retract(M::Stiefel, ::Any, ::Any, ::PolarRetraction), see Section 4 of [HGA15] or Section 3.5 of [Zhu16]:

    \[T_{q\gets p}^{\text{Pol}}(X) = q*Λ + (I-qq^{\mathrm{T}})X(1+d^\mathrm{T}d)^{-\frac{1}{2}},\]

    where $d = \bigl( \operatorname{retr}^{\mathrm{Pol}}_p\bigr)^{-1}(q)$, and $Λ$ is the unique solution of the Sylvester equation

    \[ Λ(I+d^\mathrm{T}d)^{\frac{1}{2}} + (I + d^\mathrm{T}d)^{\frac{1}{2}} = q^\mathrm{T}X - X^\mathrm{T}q\]

    source
    ManifoldsBase.vector_transport_toMethod
    vector_transport_to(M::Stiefel, p, X, q, DifferentiatedRetractionVectorTransport{QRRetraction})

    Compute the vector transport by computing the push forward of the retract(M::Stiefel, ::Any, ::Any, ::QRRetraction), see [AMS08], p. 173, or Section 3.5 of [Zhu16].

    \[T_{q \gets p}^{\text{QR}}(X) = q*\rho_{\mathrm{s}}(q^\mathrm{T}XR^{-1}) + (I-qq^{\mathrm{T}})XR^{-1},\]

    where $d = \bigl(\operatorname{retr}^{\mathrm{QR}}\bigr)^{-1}_p(q)$, $R$ is the $R$ factor of the QR decomposition of $p+X$, and

    \[\bigl( \rho_{\mathrm{s}}(A) \bigr)_{ij} += \begin{cases} +A_{ij}&\text{ if } i > j\\ +0 \text{ if } i = j\\ +-A_{ji} \text{ if } i < j.\\ +\end{cases}\]

    source
    ManifoldsBase.vector_transport_toMethod
    vector_transport_to(M::Stiefel, p, X, q, ::ProjectionTransport)

    Compute a vector transport by projection, i.e. project X from the tangent space at p by projection it onto the tangent space at q.

    source

    Default metric: the Euclidean metric

    The EuclideanMetric is obtained from the embedding of the Stiefel manifold in $ℝ^{n,k}$.

    Base.expMethod
    exp(M::Stiefel, p, X)

    Compute the exponential map on the Stiefel{n,k,𝔽}() manifold M emanating from p in tangent direction X.

    \[\exp_p X = \begin{pmatrix} + p\\X + \end{pmatrix} + \operatorname{Exp} + \left( + \begin{pmatrix} p^{\mathrm{H}}X & - X^{\mathrm{H}}X\\ + I_n & p^{\mathrm{H}}X\end{pmatrix} + \right) +\begin{pmatrix} \exp( -p^{\mathrm{H}}X) \\ 0_n\end{pmatrix},\]

    where $\operatorname{Exp}$ denotes matrix exponential, $\cdot^{\mathrm{H}}$ denotes the complex conjugate transpose or Hermitian, and $I_k$ and $0_k$ are the identity matrix and the zero matrix of dimension $k × k$, respectively.

    source
    ManifoldDiff.riemannian_HessianMethod
    Y = riemannian_Hessian(M::Stiefel, p, G, H, X)
    +riemannian_Hessian!(M::Stiefel, Y, p, G, H, X)

    Compute the Riemannian Hessian $\operatorname{Hess} f(p)[X]$ given the Euclidean gradient $∇ f(\tilde p)$ in G and the Euclidean Hessian $∇^2 f(\tilde p)[\tilde X]$ in H, where $\tilde p, \tilde X$ are the representations of $p,X$ in the embedding,.

    Here, we adopt Eq. (5.6) [Ngu23], where we use for the EuclideanMetric $α_0=α_1=1$ in their formula. Then the formula reads

    \[ \operatorname{Hess}f(p)[X] + = + \operatorname{proj}_{T_p\mathcal M}\Bigl( + ∇^2f(p)[X] - \frac{1}{2} X \bigl((∇f(p))^{\mathrm{H}}p + p^{\mathrm{H}}∇f(p)\bigr) + \Bigr).\]

    Compared to Eq. (5.6) also the metric conversion simplifies to the identity.

    source
    ManifoldsBase.WeingartenMethod
    Weingarten(M::Stiefel, p, X, V)

    Compute the Weingarten map $\mathcal W_p$ at p on the Stiefel M with respect to the tangent vector $X \in T_p\mathcal M$ and the normal vector $V \in N_p\mathcal M$.

    The formula is due to [AMT13] given by

    \[\mathcal W_p(X,V) = -Xp^{\mathrm{H}}V - \frac{1}{2}p\bigl(X^\mathrm{H}V + V^{\mathrm{H}}X\bigr)\]

    source
    ManifoldsBase.get_basisMethod
    get_basis(M::Stiefel{n,k,ℝ}, p, B::DefaultOrthonormalBasis) where {n,k}

    Create the default basis using the parametrization for any $X ∈ T_p\mathcal M$. Set $p_\bot \in ℝ^{n\times(n-k)}$ the matrix such that the $n\times n$ matrix of the common columns $[p\ p_\bot]$ is an ONB. For any skew symmetric matrix $a ∈ ℝ^{k\times k}$ and any $b ∈ ℝ^{(n-k)\times k}$ the matrix

    \[X = pa + p_\bot b ∈ T_p\mathcal M\]

    and we can use the $\frac{1}{2}k(k-1) + (n-k)k = nk-\frac{1}{2}k(k+1)$ entries of $a$ and $b$ to specify a basis for the tangent space. using unit vectors for constructing both the upper matrix of $a$ to build a skew symmetric matrix and the matrix b, the default basis is constructed.

    Since $[p\ p_\bot]$ is an automorphism on $ℝ^{n\times p}$ the elements of $a$ and $b$ are orthonormal coordinates for the tangent space. To be precise exactly one element in the upper trangular entries of $a$ is set to $1$ its symmetric entry to $-1$ and we normalize with the factor $\frac{1}{\sqrt{2}}$ and for $b$ one can just use unit vectors reshaped to a matrix to obtain orthonormal set of parameters.

    source
    ManifoldsBase.inverse_retractMethod
    inverse_retract(M::Stiefel, p, q, method::ProjectionInverseRetraction)

    Compute a projection-based inverse retraction.

    The inverse retraction is computed by projecting the logarithm map in the embedding to the tangent space at $p$.

    source
    ManifoldsBase.projectMethod
    project(M::Stiefel,p)

    Projects p from the embedding onto the Stiefel M, i.e. compute q as the polar decomposition of $p$ such that $q^{\mathrm{H}}q$ is the identity, where $\cdot^{\mathrm{H}}$ denotes the hermitian, i.e. complex conjugate transposed.

    source
    ManifoldsBase.projectMethod
    project(M::Stiefel, p, X)

    Project X onto the tangent space of p to the Stiefel manifold M. The formula reads

    \[\operatorname{proj}_{T_p\mathcal M}(X) = X - p \operatorname{Sym}(p^{\mathrm{H}}X),\]

    where $\operatorname{Sym}(q)$ is the symmetrization of $q$, e.g. by $\operatorname{Sym}(q) = \frac{q^{\mathrm{H}}+q}{2}$.

    source
    ManifoldsBase.retractMethod
    retract(M::Stiefel, p, X, method::ProjectionRetraction)

    Compute a projection-based retraction.

    The retraction is computed by projecting the exponential map in the embedding to M.

    source

    The canonical metric

    Any $X∈T_p\mathcal M$, $p∈\mathcal M$, can be written as

    \[X = pA + (I_n-pp^{\mathrm{T}})B, +\quad +A ∈ ℝ^{p×p} \text{ skew-symmetric}, +\quad +B ∈ ℝ^{n×p} \text{ arbitrary.}\]

    In the EuclideanMetric, the elements from $A$ are counted twice (i.e. weighted with a factor of 2). The canonical metric avoids this.

    Base.expMethod
    q = exp(M::MetricManifold{ℝ, Stiefel{n,k,ℝ}, CanonicalMetric}, p, X)
    +exp!(M::MetricManifold{ℝ, Stiefel{n,k,ℝ}, q, CanonicalMetric}, p, X)

    Compute the exponential map on the Stiefel(n,k) manifold with respect to the CanonicalMetric.

    First, decompose The tangent vector $X$ into its horizontal and vertical component with respect to $p$, i.e.

    \[X = pp^{\mathrm{T}}X + (I_n-pp^{\mathrm{T}})X,\]

    where $I_n$ is the $n\times n$ identity matrix. We introduce $A=p^{\mathrm{T}}X$ and $QR = (I_n-pp^{\mathrm{T}})X$ the qr decomposition of the vertical component. Then using the matrix exponential $\operatorname{Exp}$ we introduce $B$ and $C$ as

    \[\begin{pmatrix} +B\\C +\end{pmatrix} +\coloneqq +\operatorname{Exp}\left( +\begin{pmatrix} +A & -R^{\mathrm{T}}\\ R & 0 +\end{pmatrix} +\right) +\begin{pmatrix}I_k\\0\end{pmatrix}\]

    the exponential map reads

    \[q = \exp_p X = pC + QB.\]

    For more details, see [EAS98][Zim17].

    source
    ManifoldDiff.riemannian_HessianMethod
    Y = riemannian_Hessian(M::MetricManifold{ℝ, Stiefel{n,k}, CanonicalMetric}, p, G, H, X)
    +riemannian_Hessian!(M::MetricManifold{ℝ, Stiefel{n,k}, CanonicalMetric}, Y, p, G, H, X)

    Compute the Riemannian Hessian $\operatorname{Hess} f(p)[X]$ given the Euclidean gradient $∇ f(\tilde p)$ in G and the Euclidean Hessian $∇^2 f(\tilde p)[\tilde X]$ in H, where $\tilde p, \tilde X$ are the representations of $p,X$ in the embedding,.

    Here, we adopt Eq. (5.6) [Ngu23], for the CanonicalMetric $α_0=1, α_1=\frac{1}{2}$ in their formula. The formula reads

    \[ \operatorname{Hess}f(p)[X] + = + \operatorname{proj}_{T_p\mathcal M}\Bigl( + ∇^2f(p)[X] - \frac{1}{2} X \bigl( (∇f(p))^{\mathrm{H}}p + p^{\mathrm{H}}∇f(p)\bigr) + - \frac{1}{2} \bigl( P ∇f(p) p^{\mathrm{H}} + p ∇f(p))^{\mathrm{H}} P)X + \Bigr),\]

    where $P = I-pp^{\mathrm{H}}$.

    source
    ManifoldsBase.innerMethod
    inner(M::MetricManifold{ℝ, Stiefel{n,k,ℝ}, X, CanonicalMetric}, p, X, Y)

    Compute the inner product on the Stiefel manifold with respect to the CanonicalMetric. The formula reads

    \[g_p(X,Y) = \operatorname{tr}\bigl( X^{\mathrm{T}}(I_n - \frac{1}{2}pp^{\mathrm{T}})Y \bigr).\]

    source
    ManifoldsBase.inverse_retractMethod
    X = inverse_retract(M::MetricManifold{ℝ, Stiefel{n,k,ℝ}, CanonicalMetric}, p, q, a::ApproximateLogarithmicMap)
    +inverse_retract!(M::MetricManifold{ℝ, Stiefel{n,k,ℝ}, X, CanonicalMetric}, p, q, a::ApproximateLogarithmicMap)

    Compute an approximation to the logarithmic map on the Stiefel(n,k) manifold with respect to the CanonicalMetric using a matrix-algebraic based approach to an iterative inversion of the formula of the exp.

    The algorithm is derived in [Zim17] and it uses the max_iterations and the tolerance field from the ApproximateLogarithmicMap.

    source

    The submersion or normal metric

    Manifolds.StiefelSubmersionMetricType
    StiefelSubmersionMetric{T<:Real} <: RiemannianMetric

    The submersion (or normal) metric family on the Stiefel manifold.

    The family, with a single real parameter $α>-1$, has two special cases:

    The family was described in [HML21]. This implementation follows the description in [ZH22].

    Constructor

    StiefelSubmersionMetric(α)

    Construct the submersion metric on the Stiefel manifold with the parameter $α$.

    source
    Base.expMethod
    q = exp(M::MetricManifold{ℝ, Stiefel{n,k,ℝ}, <:StiefelSubmersionMetric}, p, X)
    +exp!(M::MetricManifold{ℝ, Stiefel{n,k,ℝ}, q, <:StiefelSubmersionMetric}, p, X)

    Compute the exponential map on the Stiefel(n,k) manifold with respect to the StiefelSubmersionMetric.

    The exponential map is given by

    \[\exp_p X = \operatorname{Exp}\bigl( + -\frac{2α+1}{α+1} p p^\mathrm{T} X p^\mathrm{T} + + X p^\mathrm{T} - p X^\mathrm{T} +\bigr) p \operatorname{Exp}\bigl(\frac{\alpha}{\alpha+1} p^\mathrm{T} X\bigr)\]

    This implementation is based on [ZH22].

    For $k < \frac{n}{2}$ the exponential is computed more efficiently using StiefelFactorization.

    source
    Base.logMethod
    log(M::MetricManifold{ℝ,Stiefel{n,k,ℝ},<:StiefelSubmersionMetric}, p, q; kwargs...)

    Compute the logarithmic map on the Stiefel(n,k) manifold with respect to the StiefelSubmersionMetric.

    The logarithmic map is computed using ShootingInverseRetraction. For $k ≤ \lfloor\frac{n}{2}\rfloor$, this is sped up using the $k$-shooting method of [ZH22]. Keyword arguments are forwarded to ShootingInverseRetraction; see that documentation for details. Their defaults are:

    • num_transport_points=4
    • tolerance=sqrt(eps())
    • max_iterations=1_000
    source
    ManifoldDiff.riemannian_HessianMethod
    Y = riemannian_Hessian(M::MetricManifold{ℝ,Stiefel{n,k,ℝ}, StiefelSubmersionMetric},, p, G, H, X)
    +riemannian_Hessian!(MetricManifold{ℝ,Stiefel{n,k,ℝ}, StiefelSubmersionMetric},, Y, p, G, H, X)

    Compute the Riemannian Hessian $\operatorname{Hess} f(p)[X]$ given the Euclidean gradient $∇ f(\tilde p)$ in G and the Euclidean Hessian $∇^2 f(\tilde p)[\tilde X]$ in H, where $\tilde p, \tilde X$ are the representations of $p,X$ in the embedding,.

    Here, we adopt Eq. (5.6) [Ngu23], for the CanonicalMetric $α_0=1, α_1=\frac{1}{2}$ in their formula. The formula reads

    \[ \operatorname{Hess}f(p)[X] + = + \operatorname{proj}_{T_p\mathcal M}\Bigl( + ∇^2f(p)[X] - \frac{1}{2} X \bigl( (∇f(p))^{\mathrm{H}}p + p^{\mathrm{H}}∇f(p)\bigr) + - \frac{2α+1}{2(α+1)} \bigl( P ∇f(p) p^{\mathrm{H}} + p ∇f(p))^{\mathrm{H}} P)X + \Bigr),\]

    where $P = I-pp^{\mathrm{H}}$.

    Compared to Eq. (5.6) we have that their $α_0 = 1$and $\alpha_1 = \frac{2α+1}{2(α+1)} + 1$.

    source
    ManifoldsBase.innerMethod
    inner(M::MetricManifold{ℝ, Stiefel{n,k,ℝ}, X, <:StiefelSubmersionMetric}, p, X, Y)

    Compute the inner product on the Stiefel manifold with respect to the StiefelSubmersionMetric. The formula reads

    \[g_p(X,Y) = \operatorname{tr}\bigl( X^{\mathrm{T}}(I_n - \frac{2α+1}{2(α+1)}pp^{\mathrm{T}})Y \bigr),\]

    where $α$ is the parameter of the metric.

    source
    ManifoldsBase.inverse_retractMethod
    inverse_retract(
    +    M::MetricManifold{ℝ,Stiefel{n,k,ℝ},<:StiefelSubmersionMetric},
    +    p,
    +    q,
    +    method::ShootingInverseRetraction,
    +)

    Compute the inverse retraction using ShootingInverseRetraction.

    In general the retraction is computed using the generic shooting method.

    inverse_retract(
    +    M::MetricManifold{ℝ,Stiefel{n,k,ℝ},<:StiefelSubmersionMetric},
    +    p,
    +    q,
    +    method::ShootingInverseRetraction{
    +        ExponentialRetraction,
    +        ProjectionInverseRetraction,
    +        <:Union{ProjectionTransport,ScaledVectorTransport{ProjectionTransport}},
    +    },
    +)

    Compute the inverse retraction using ShootingInverseRetraction more efficiently.

    For $k < \frac{n}{2}$ the retraction is computed more efficiently using StiefelFactorization.

    source

    Internal types and functions

    Manifolds.StiefelFactorizationType
    StiefelFactorization{UT,XT} <: AbstractManifoldPoint

    Represent points (and vectors) on Stiefel(n, k) with $2k × k$ factors [ZH22].

    Given a point $p ∈ \mathrm{St}(n, k)$ and another matrix $B ∈ ℝ^{n × k}$ for $k ≤ \lfloor\frac{n}{2}\rfloor$ the factorization is

    \[\begin{aligned} +B &= UZ\\ +U &= \begin{bmatrix}p & Q\end{bmatrix} ∈ \mathrm{St}(n, 2k)\\ +Z &= \begin{bmatrix}Z_1 \\ Z_2\end{bmatrix}, \quad Z_1,Z_2 ∈ ℝ^{k × k}. +\end{aligned}\]

    If $B ∈ \mathrm{St}(n, k)$, then $Z ∈ \mathrm{St}(2k, k)$. Note that not every matrix $B$ can be factorized in this way.

    For a fixed $U$, if $r ∈ \mathrm{St}(n, k)$ has the factor $Z_r ∈ \mathrm{St}(2k, k)$, then $X_r ∈ T_r \mathrm{St}(n, k)$ has the factor $Z_{X_r} ∈ T_{Z_r} \mathrm{St}(2k, k)$.

    $Q$ is determined by choice of a second matrix $A ∈ ℝ^{n × k}$ with the decomposition

    \[\begin{aligned} +A &= UZ\\ +Z_1 &= p^\mathrm{T} A \\ +Q Z_2 &= (I - p p^\mathrm{T}) A, +\end{aligned}\]

    where here $Q Z_2$ is the any decomposition that produces $Q ∈ \mathrm{St}(n, k)$, for which we choose the QR decomposition.

    This factorization is useful because it is closed under addition, subtraction, scaling, projection, and the Riemannian exponential and logarithm under the StiefelSubmersionMetric. That is, if all matrices involved are factorized to have the same $U$, then all of these operations and any algorithm that depends only on them can be performed in terms of the $2k × k$ matrices $Z$. For $n ≫ k$, this can be much more efficient than working with the full matrices.

    Warning

    This type is intended strictly for internal use and should not be directly used.

    source

    Literature

    [AMT13]
    +
    + +
    [AMS08]
    +
    +
    P.-A. Absil, R. Mahony and R. Sepulchre. Optimization Algorithms on Matrix Manifolds. Princeton University Press (2008), available online at [press.princeton.edu/chapters/absil/](http://press.princeton.edu/chapters/absil/).
    +
    [Chi03]
    +
    +
    Y. Chikuse. Statistics on Special Manifolds. Springer New York (2003).
    +
    [EAS98]
    +
    +
    A. Edelman, T. A. Arias and S. T. Smith. The Geometry of Algorithms with Orthogonality Constraints. SIAM Journal on Matrix Analysis and Applications 20, 303–353 (1998), arXiv:806030.
    +
    [HGA15]
    +
    +
    W. Huang, K. A. Gallivan and P.-A. Absil. A Broyden Class of Quasi-Newton Methods for Riemannian Optimization. SIAM Journal on Optimization 25, 1660–1685 (2015).
    +
    [HML21]
    +
    +
    K. Hüper, I. Markina and F. S. Leite. A Lagrangian approach to extremal curves on Stiefel manifolds. Journal of Geometric Mechanics 13, 55 (2021).
    +
    [KFT13]
    +
    +
    T. Kaneko, S. Fiori and T. Tanaka. Empirical Arithmetic Averaging Over the Compact Stiefel Manifold. IEEE Transactions on Signal Processing 61, 883–894 (2013).
    +
    [Ngu23]
    +
    +
    D. Nguyen. Operator-Valued Formulas for Riemannian Gradient and Hessian and Families of Tractable Metrics in Riemannian Optimization. Journal of Optimization Theory and Applications 198, 135–164 (2023), arXiv:2009.10159.
    +
    [Zhu16]
    +
    +
    X. Zhu. A Riemannian conjugate gradient method for optimization on the Stiefel manifold. Computational Optimization and Applications 67, 73–110 (2016).
    +
    [ZD18]
    +
    +
    X. Zhu and C. Duan. On matrix exponentials and their approximations related to optimization on the Stiefel manifold. Optimization Letters 13, 1069–1083 (2018).
    +
    [Zim17]
    +
    +
    R. Zimmermann. A Matrix-Algebraic Algorithm for the Riemannian Logarithm on the Stiefel Manifold under the Canonical Metric. SIAM J. Matrix Anal. Appl. 38, 322–342 (2017), arXiv:1604.05054.
    +
    [ZH22]
    +
    +
    R. Zimmermann and K. Hüper. Computing the Riemannian Logarithm on the Stiefel Manifold: Metrics, Methods, and Performance. SIAM Journal on Matrix Analysis and Applications 43, 953-980 (2022), arXiv:2103.12046.
    +
    +
    diff --git a/v0.8.79/manifolds/symmetric.html b/v0.8.79/manifolds/symmetric.html new file mode 100644 index 0000000000..00c5136ae7 --- /dev/null +++ b/v0.8.79/manifolds/symmetric.html @@ -0,0 +1,6 @@ + +Symmetric matrices · Manifolds.jl

    Symmetric matrices

    Manifolds.SymmetricMatricesType
    SymmetricMatrices{n,𝔽} <: AbstractDecoratorManifold{𝔽}

    The AbstractManifold $ \operatorname{Sym}(n)$ consisting of the real- or complex-valued symmetric matrices of size $n × n$, i.e. the set

    \[\operatorname{Sym}(n) = \bigl\{p ∈ 𝔽^{n × n}\ \big|\ p^{\mathrm{H}} = p \bigr\},\]

    where $\cdot^{\mathrm{H}}$ denotes the Hermitian, i.e. complex conjugate transpose, and the field $𝔽 ∈ \{ ℝ, ℂ\}$.

    Though it is slightly redundant, usually the matrices are stored as $n × n$ arrays.

    Note that in this representation, the complex valued case has to have a real-valued diagonal, which is also reflected in the manifold_dimension.

    Constructor

    SymmetricMatrices(n::Int, field::AbstractNumbers=ℝ)

    Generate the manifold of $n × n$ symmetric matrices.

    source
    ManifoldsBase.WeingartenMethod
    Y = Weingarten(M::SymmetricMatrices, p, X, V)
    +Weingarten!(M::SymmetricMatrices, Y, p, X, V)

    Compute the Weingarten map $\mathcal W_p$ at p on the SymmetricMatrices M with respect to the tangent vector $X \in T_p\mathcal M$ and the normal vector $V \in N_p\mathcal M$.

    Since this a flat space by itself, the result is always the zero tangent vector.

    source
    ManifoldsBase.check_pointMethod
    check_point(M::SymmetricMatrices{n,𝔽}, p; kwargs...)

    Check whether p is a valid manifold point on the SymmetricMatrices M, i.e. whether p is a symmetric matrix of size (n,n) with values from the corresponding AbstractNumbers 𝔽.

    The tolerance for the symmetry of p can be set using kwargs....

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::SymmetricMatrices{n,𝔽}, p, X; kwargs... )

    Check whether X is a tangent vector to manifold point p on the SymmetricMatrices M, i.e. X has to be a symmetric matrix of size (n,n) and its values have to be from the correct AbstractNumbers.

    The tolerance for the symmetry of X can be set using kwargs....

    source
    ManifoldsBase.manifold_dimensionMethod
    manifold_dimension(M::SymmetricMatrices{n,𝔽})

    Return the dimension of the SymmetricMatrices matrix M over the number system 𝔽, i.e.

    \[\begin{aligned} +\dim \mathrm{Sym}(n,ℝ) &= \frac{n(n+1)}{2},\\ +\dim \mathrm{Sym}(n,ℂ) &= 2\frac{n(n+1)}{2} - n = n^2, +\end{aligned}\]

    where the last $-n$ is due to the zero imaginary part for Hermitian matrices

    source
    ManifoldsBase.projectMethod
    project(M::SymmetricMatrices, p, X)

    Project the matrix X onto the tangent space at p on the SymmetricMatrices M,

    \[\operatorname{proj}_p(X) = \frac{1}{2} \bigl( X + X^{\mathrm{H}} \bigr),\]

    where $\cdot^{\mathrm{H}}$ denotes the Hermitian, i.e. complex conjugate transposed.

    source
    ManifoldsBase.projectMethod
    project(M::SymmetricMatrices, p)

    Projects p from the embedding onto the SymmetricMatrices M, i.e.

    \[\operatorname{proj}_{\operatorname{Sym}(n)}(p) = \frac{1}{2} \bigl( p + p^{\mathrm{H}} \bigr),\]

    where $\cdot^{\mathrm{H}}$ denotes the Hermitian, i.e. complex conjugate transposed.

    source
    diff --git a/v0.8.79/manifolds/symmetricpositivedefinite.html b/v0.8.79/manifolds/symmetricpositivedefinite.html new file mode 100644 index 0000000000..ca45652e02 --- /dev/null +++ b/v0.8.79/manifolds/symmetricpositivedefinite.html @@ -0,0 +1,54 @@ + +Symmetric positive definite · Manifolds.jl

    Symmetric positive definite matrices

    Manifolds.SymmetricPositiveDefiniteType
    SymmetricPositiveDefinite{N} <: AbstractDecoratorManifold{ℝ}

    The manifold of symmetric positive definite matrices, i.e.

    \[\mathcal P(n) = +\bigl\{ +p ∈ ℝ^{n × n}\ \big|\ a^\mathrm{T}pa > 0 \text{ for all } a ∈ ℝ^{n}\backslash\{0\} +\bigr\}\]

    The tangent space at $T_p\mathcal P(n)$ reads

    \[ T_p\mathcal P(n) = + \bigl\{ + X \in \mathbb R^{n×n} \big|\ X=X^\mathrm{T} + \bigr\},\]

    i.e. the set of symmetric matrices,

    Constructor

    SymmetricPositiveDefinite(n)

    generates the manifold $\mathcal P(n) \subset ℝ^{n × n}$

    source

    This manifold can – for example – be illustrated as ellipsoids: since the eigenvalues are all positive they can be taken as lengths of the axes of an ellipsoids while the directions are given by the eigenvectors.

    An example set of data

    The manifold can be equipped with different metrics

    Common and metric independent functions

    Base.convertMethod
    convert(::Type{AbstractMatrix}, p::SPDPoint)

    return the point p as a matrix. The matrix is either stored within the SPDPoint or reconstructed from p.eigen.

    source
    Base.randMethod
    rand(M::SymmetricPositiveDefinite; σ::Real=1)

    Generate a random symmetric positive definite matrix on the SymmetricPositiveDefinite manifold M.

    source
    ManifoldsBase.check_pointMethod
    check_point(M::SymmetricPositiveDefinite, p; kwargs...)

    checks, whether p is a valid point on the SymmetricPositiveDefinite M, i.e. is a matrix of size (N,N), symmetric and positive definite. The tolerance for the second to last test can be set using the kwargs....

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::SymmetricPositiveDefinite, p, X; kwargs... )

    Check whether X is a tangent vector to p on the SymmetricPositiveDefinite M, i.e. atfer check_point(M,p), X has to be of same dimension as p and a symmetric matrix, i.e. this stores tangent vetors as elements of the corresponding Lie group. The tolerance for the last test can be set using the kwargs....

    source

    Default metric: the affine invariant metric

    Manifolds.AffineInvariantMetricType
    AffineInvariantMetric <: AbstractMetric

    The linear affine metric is the metric for symmetric positive definite matrices, that employs matrix logarithms and exponentials, which yields a linear and affine metric.

    source

    This metric is also the default metric, i.e. any call of the following functions with P=SymmetricPositiveDefinite(3) will result in MetricManifold(P,AffineInvariantMetric())and hence yield the formulae described in this seciton.

    Base.expMethod
    exp(M::SymmetricPositiveDefinite, p, X)
    +exp(M::MetricManifold{SymmetricPositiveDefinite{N},AffineInvariantMetric}, p, X)

    Compute the exponential map from p with tangent vector X on the SymmetricPositiveDefinite M with its default MetricManifold having the AffineInvariantMetric. The formula reads

    \[\exp_p X = p^{\frac{1}{2}}\operatorname{Exp}(p^{-\frac{1}{2}} X p^{-\frac{1}{2}})p^{\frac{1}{2}},\]

    where $\operatorname{Exp}$ denotes to the matrix exponential.

    source
    Base.logMethod
    log(M::SymmetricPositiveDefinite, p, q)
    +log(M::MetricManifold{SymmetricPositiveDefinite,AffineInvariantMetric}, p, q)

    Compute the logarithmic map from p to q on the SymmetricPositiveDefinite as a MetricManifold with AffineInvariantMetric. The formula reads

    \[\log_p q = +p^{\frac{1}{2}}\operatorname{Log}(p^{-\frac{1}{2}}qp^{-\frac{1}{2}})p^{\frac{1}{2}},\]

    where $\operatorname{Log}$ denotes to the matrix logarithm.

    source
    ManifoldDiff.riemannian_HessianMethod
    riemannian_Hessian(M::SymmetricPositiveDefinite, p, G, H, X)

    The Riemannian Hessian can be computed as stated in Eq. (7.3) [Ngu23]. Let $\nabla f(p)$ denote the Euclidean gradient G, $\nabla^2 f(p)[X]$ the Euclidean Hessian H, and $\operatorname{sym}(X) = \frac{1}{2}\bigl(X^{\mathrm{T}}+X\bigr)$ the symmetrization operator. Then the formula reads

    \[ \operatorname{Hess}f(p)[X] + = + p\operatorname{sym}(∇^2 f(p)[X])p + + \operatorname{sym}\bigl( X\operatorname{sym}\bigl(∇ f(p)\bigr)p)\]

    source
    Manifolds.volume_densityMethod
    volume_density(::SymmetricPositiveDefinite{n}, p, X) where {n}

    Compute the volume density of the SymmetricPositiveDefinite manifold at p in direction X. See [CKA17], Section 6.2 for details. Note that metric in Manifolds.jl has a different scaling factor than the reference.

    source
    ManifoldsBase.change_metricMethod
    change_metric(M::SymmetricPositiveDefinite{n}, E::EuclideanMetric, p, X)

    Given a tangent vector $X ∈ T_p\mathcal P(n)$ with respect to the EuclideanMetric g_E, this function changes into the AffineInvariantMetric (default) metric on the SymmetricPositiveDefinite M.

    To be precise we are looking for $c\colon T_p\mathcal P(n) \to T_p\mathcal P(n)$ such that for all $Y,Z ∈ T_p\mathcal P(n)$` it holds

    \[⟨Y,Z⟩ = \operatorname{tr}(YZ) = \operatorname{tr}(p^{-1}c(Y)p^{-1}c(Z)) = g_p(c(Z),c(Y))\]

    and hence $c(X) = pX$ is computed.

    source
    ManifoldsBase.change_representerMethod
    change_representer(M::SymmetricPositiveDefinite, E::EuclideanMetric, p, X)

    Given a tangent vector $X ∈ T_p\mathcal M$ representing a linear function on the tangent space at p with respect to the EuclideanMetric g_E, this is turned into the representer with respect to the (default) metric, the AffineInvariantMetric on the SymmetricPositiveDefinite M.

    To be precise we are looking for $Z∈T_p\mathcal P(n)$ such that for all $Y∈T_p\mathcal P(n)$` it holds

    \[⟨X,Y⟩ = \operatorname{tr}(XY) = \operatorname{tr}(p^{-1}Zp^{-1}Y) = g_p(Z,Y)\]

    and hence $Z = pXp$.

    source
    ManifoldsBase.distanceMethod
    distance(M::SymmetricPositiveDefinite, p, q)
    +distance(M::MetricManifold{SymmetricPositiveDefinite,AffineInvariantMetric}, p, q)

    Compute the distance on the SymmetricPositiveDefinite manifold between p and q, as a MetricManifold with AffineInvariantMetric. The formula reads

    \[d_{\mathcal P(n)}(p,q) += \lVert \operatorname{Log}(p^{-\frac{1}{2}}qp^{-\frac{1}{2}})\rVert_{\mathrm{F}}.,\]

    where $\operatorname{Log}$ denotes the matrix logarithm and $\lVert\cdot\rVert_{\mathrm{F}}$ denotes the matrix Frobenius norm.

    source
    ManifoldsBase.get_basisMethod
    [Ξ,κ] = get_basis(M::SymmetricPositiveDefinite, p, B::DefaultOrthonormalBasis)
    +[Ξ,κ] = get_basis(M::MetricManifold{SymmetricPositiveDefinite{N},AffineInvariantMetric}, p, B::DefaultOrthonormalBasis)

    Return a default ONB for the tangent space $T_p\mathcal P(n)$ of the SymmetricPositiveDefinite with respect to the AffineInvariantMetric.

    \[ g_p(X,Y) = \operatorname{tr}(p^{-1} X p^{-1} Y),\]

    The basis constructed here is based on the ONB for symmetric matrices constructed as follows. Let

    \[\Delta_{i,j} = (a_{k,l})_{k,l=1}^n \quad \text{ with } +a_{k,l} = +\begin{cases} + 1 & \mbox{ for } k=l \text{ if } i=j\\ + \frac{1}{\sqrt{2}} & \mbox{ for } k=i, l=j \text{ or } k=j, l=i\\ + 0 & \text{ else.} +\end{cases}\]

    which forms an ONB for the space of symmetric matrices.

    We then form the ONB by

    \[ \Xi_{i,j} = p^{\frac{1}{2}}\Delta_{i,j}p^{\frac{1}{2}},\qquad i=1,\ldots,n, j=i,\ldots,n.\]

    source
    ManifoldsBase.get_basis_diagonalizingMethod
    [Ξ,κ] = get_basis_diagonalizing(M::SymmetricPositiveDefinite, p, B::DiagonalizingOrthonormalBasis)
    +[Ξ,κ] = get_basis_diagonalizing(M::MetricManifold{SymmetricPositiveDefinite{N},AffineInvariantMetric}, p, B::DiagonalizingOrthonormalBasis)

    Return a orthonormal basis Ξ as a vector of tangent vectors (of length manifold_dimension of M) in the tangent space of p on the MetricManifold of SymmetricPositiveDefinite manifold M with AffineInvariantMetric that diagonalizes the curvature tensor $R(u,v)w$ with eigenvalues κ and where the direction B.frame_direction $V$ has curvature 0.

    The construction is based on an ONB for the symmetric matrices similar to get_basis(::SymmetricPositiveDefinite, p, ::DefaultOrthonormalBasis just that the ONB here is build from the eigen vectors of $p^{\frac{1}{2}}Vp^{\frac{1}{2}}$.

    source
    ManifoldsBase.get_coordinatesMethod
    get_coordinates(::SymmetricPositiveDefinite, p, X, ::DefaultOrthonormalBasis)

    Using the basis from get_basis the coordinates with respect to this ONB can be simplified to

    \[ c_k = \mathrm{tr}(p^{-\frac{1}{2}}\Delta_{i,j} X)\]

    where $k$ is trhe linearized index of the $i=1,\ldots,n, j=i,\ldots,n$.

    source
    ManifoldsBase.get_vectorMethod
    get_vector(::SymmetricPositiveDefinite, p, c, ::DefaultOrthonormalBasis)

    Using the basis from get_basis the vector reconstruction with respect to this ONB can be simplified to

    \[ X = p^{\frac{1}{2}} \Biggl( \sum_{i=1,j=i}^n c_k \Delta_{i,j} \Biggr) p^{\frac{1}{2}}\]

    where $k$ is the linearized index of the $i=1,\ldots,n, j=i,\ldots,n$.

    source
    ManifoldsBase.parallel_transport_toMethod
    parallel_transport_to(M::SymmetricPositiveDefinite, p, X, q)
    +parallel_transport_to(M::MetricManifold{SymmetricPositiveDefinite,AffineInvariantMetric}, p, X, y)

    Compute the parallel transport of X from the tangent space at p to the tangent space at q on the SymmetricPositiveDefinite as a MetricManifold with the AffineInvariantMetric. The formula reads

    \[\mathcal P_{q←p}X = p^{\frac{1}{2}} +\operatorname{Exp}\bigl( +\frac{1}{2}p^{-\frac{1}{2}}\log_p(q)p^{-\frac{1}{2}} +\bigr) +p^{-\frac{1}{2}}X p^{-\frac{1}{2}} +\operatorname{Exp}\bigl( +\frac{1}{2}p^{-\frac{1}{2}}\log_p(q)p^{-\frac{1}{2}} +\bigr) +p^{\frac{1}{2}},\]

    where $\operatorname{Exp}$ denotes the matrix exponential and log the logarithmic map on SymmetricPositiveDefinite (again with respect to the AffineInvariantMetric).

    source
    ManifoldsBase.riemann_tensorMethod
    riemann_tensor(::SymmetricPositiveDefinite, p, X, Y, Z)

    Compute the value of Riemann tensor on the SymmetricPositiveDefinite manifold. The formula reads [Ren11] $R(X,Y)Z=p^{1/2}R(X_I, Y_I)Z_Ip^{1/2}$, where $R_I(X_I, Y_I)Z_I=\frac{1}{4}[Z_I, [X_I, Y_I]]$, $X_I=p^{-1/2}Xp^{-1/2}$, $Y_I=p^{-1/2}Yp^{-1/2}$ and $Z_I=p^{-1/2}Zp^{-1/2}$.

    source

    Bures-Wasserstein metric

    Base.expMethod
    exp(::MatricManifold{ℝ,SymmetricPositiveDefinite,BuresWassersteinMetric}, p, X)

    Compute the exponential map on SymmetricPositiveDefinite with respect to the BuresWassersteinMetric given by

    \[ \exp_p(X) = p+X+L_p(X)pL_p(X)\]

    where $q=L_p(X)$ denotes the Lyapunov operator, i.e. it solves $pq + qp = X$.

    source
    Base.logMethod
    log(::MatricManifold{SymmetricPositiveDefinite,BuresWassersteinMetric}, p, q)

    Compute the logarithmic map on SymmetricPositiveDefinite with respect to the BuresWassersteinMetric given by

    \[ \log_p(q) = (pq)^{\frac{1}{2}} + (qp)^{\frac{1}{2}} - 2 p\]

    where $q=L_p(X)$ denotes the Lyapunov operator, i.e. it solves $pq + qp = X$.

    source
    ManifoldsBase.change_representerMethod
    change_representer(M::MetricManifold{ℝ,SymmetricPositiveDefinite,BuresWassersteinMetric}, E::EuclideanMetric, p, X)

    Given a tangent vector $X ∈ T_p\mathcal M$ representing a linear function on the tangent space at p with respect to the EuclideanMetric g_E, this is turned into the representer with respect to the (default) metric, the BuresWassersteinMetric on the SymmetricPositiveDefinite M.

    To be precise we are looking for $Z∈T_p\mathcal P(n)$ such that for all $Y∈T_p\mathcal P(n)$` it holds

    \[⟨X,Y⟩ = \operatorname{tr}(XY) = ⟨Z,Y⟩_{\mathrm{BW}}\]

    for all $Y$ and hence we get $Z$= 2(A+A^{\mathrm{T}})$with$A=Xp``.

    source
    ManifoldsBase.distanceMethod
    distance(::MatricManifold{SymmetricPositiveDefinite,BuresWassersteinMetric}, p, q)

    Compute the distance with respect to the BuresWassersteinMetric on SymmetricPositiveDefinite matrices, i.e.

    \[d(p,q) = + \operatorname{tr}(p) + \operatorname{tr}(q) - 2\operatorname{tr}\Bigl( (p^{\frac{1}{2}}qp^{\frac{1}{2}} \bigr)^\frac{1}{2} \Bigr),\]

    where the last trace can be simplified (by rotating the matrix products in the trace) to $\operatorname{tr}(pq)$.

    source

    Generalized Bures-Wasserstein metric

    Manifolds.GeneralizedBuresWassersteinMetricType
    GeneralizedBurresWassertseinMetric{T<:AbstractMatrix} <: AbstractMetric

    The generalized Bures Wasserstein metric for symmetric positive definite matrices, see [HMJG21].

    This metric internally stores the symmetric positive definite matrix $M$ to generalise the metric, where the name also follows the mentioned preprint.

    source
    Base.expMethod
    exp(::MatricManifold{ℝ,SymmetricPositiveDefinite,GeneralizedBuresWassersteinMetric}, p, X)

    Compute the exponential map on SymmetricPositiveDefinite with respect to the GeneralizedBuresWassersteinMetric given by

    \[ \exp_p(X) = p+X+\mathcal ML_{p,M}(X)pML_{p,M}(X)\]

    where $q=L_{M,p}(X)$ denotes the generalized Lyapunov operator, i.e. it solves $pqM + Mqp = X$.

    source
    Base.logMethod
    log(::MatricManifold{SymmetricPositiveDefinite,GeneralizedBuresWassersteinMetric}, p, q)

    Compute the logarithmic map on SymmetricPositiveDefinite with respect to the BuresWassersteinMetric given by

    \[ \log_p(q) = M(M^{-1}pM^{-1}q)^{\frac{1}{2}} + (qM^{-1}pM^{-1})^{\frac{1}{2}}M - 2 p.\]

    source
    ManifoldsBase.change_representerMethod
    change_representer(M::MetricManifold{ℝ,SymmetricPositiveDefinite,GeneralizedBuresWassersteinMetric}, E::EuclideanMetric, p, X)

    Given a tangent vector $X ∈ T_p\mathcal M$ representing a linear function on the tangent space at p with respect to the EuclideanMetric g_E, this is turned into the representer with respect to the (default) metric, the GeneralizedBuresWassersteinMetric on the SymmetricPositiveDefinite M.

    To be precise we are looking for $Z∈T_p\mathcal P(n)$ such that for all $Y∈T_p\mathcal P(n)$ it holds

    \[⟨X,Y⟩ = \operatorname{tr}(XY) = ⟨Z,Y⟩_{\mathrm{BW}}\]

    for all $Y$ and hence we get $Z = 2pXM + 2MXp$.

    source
    ManifoldsBase.distanceMethod
    distance(::MatricManifold{SymmetricPositiveDefinite,GeneralizedBuresWassersteinMetric}, p, q)

    Compute the distance with respect to the BuresWassersteinMetric on SymmetricPositiveDefinite matrices, i.e.

    \[d(p,q) = \operatorname{tr}(M^{-1}p) + \operatorname{tr}(M^{-1}q) + - 2\operatorname{tr}\bigl( (p^{\frac{1}{2}}M^{-1}qM^{-1}p^{\frac{1}{2}} \bigr)^{\frac{1}{2}},\]

    source

    Log-Euclidean metric

    Manifolds.LogEuclideanMetricType
    LogEuclideanMetric <: RiemannianMetric

    The LogEuclidean Metric consists of the Euclidean metric applied to all elements after mapping them into the Lie Algebra, i.e. performing a matrix logarithm beforehand.

    source
    ManifoldsBase.distanceMethod
    distance(M::MetricManifold{SymmetricPositiveDefinite{N},LogEuclideanMetric}, p, q)

    Compute the distance on the SymmetricPositiveDefinite manifold between p and q as a MetricManifold with LogEuclideanMetric. The formula reads

    \[ d_{\mathcal P(n)}(p,q) = \lVert \operatorname{Log} p - \operatorname{Log} q \rVert_{\mathrm{F}}\]

    where $\operatorname{Log}$ denotes the matrix logarithm and $\lVert\cdot\rVert_{\mathrm{F}}$ denotes the matrix Frobenius norm.

    source

    Log-Cholesky metric

    Base.expMethod
    exp(M::MetricManifold{SymmetricPositiveDefinite,LogCholeskyMetric}, p, X)

    Compute the exponential map on the SymmetricPositiveDefinite M with LogCholeskyMetric from p into direction X. The formula reads

    \[\exp_p X = (\exp_y W)(\exp_y W)^\mathrm{T}\]

    where $\exp_xW$ is the exponential map on CholeskySpace, $y$ is the cholesky decomposition of $p$, $W = y(y^{-1}Xy^{-\mathrm{T}})_\frac{1}{2}$, and $(\cdot)_\frac{1}{2}$ denotes the lower triangular matrix with the diagonal multiplied by $\frac{1}{2}$.

    source
    Base.logMethod
    log(M::MetricManifold{SymmetricPositiveDefinite,LogCholeskyMetric}, p, q)

    Compute the logarithmic map on SymmetricPositiveDefinite M with respect to the LogCholeskyMetric emanating from p to q. The formula can be adapted from the CholeskySpace as

    \[\log_p q = xW^{\mathrm{T}} + Wx^{\mathrm{T}},\]

    where $x$ is the cholesky factor of $p$ and $W=\log_x y$ for $y$ the cholesky factor of $q$ and the just mentioned logarithmic map is the one on CholeskySpace.

    source
    ManifoldsBase.distanceMethod
    distance(M::MetricManifold{SymmetricPositiveDefinite,LogCholeskyMetric}, p, q)

    Compute the distance on the manifold of SymmetricPositiveDefinite nmatrices, i.e. between two symmetric positive definite matrices p and q with respect to the LogCholeskyMetric. The formula reads

    \[d_{\mathcal P(n)}(p,q) = \sqrt{ + \lVert ⌊ x ⌋ - ⌊ y ⌋ \rVert_{\mathrm{F}}^2 + + \lVert \log(\operatorname{diag}(x)) - \log(\operatorname{diag}(y))\rVert_{\mathrm{F}}^2 }\ \ ,\]

    where $x$ and $y$ are the cholesky factors of $p$ and $q$, respectively, $⌊\cdot⌋$ denbotes the strictly lower triangular matrix of its argument, and $\lVert\cdot\rVert_{\mathrm{F}}$ the Frobenius norm.

    source
    ManifoldsBase.innerMethod
    inner(M::MetricManifold{LogCholeskyMetric,ℝ,SymmetricPositiveDefinite}, p, X, Y)

    Compute the inner product of two matrices X, Y in the tangent space of p on the SymmetricPositiveDefinite manifold M, as a MetricManifold with LogCholeskyMetric. The formula reads

    \[ g_p(X,Y) = ⟨a_z(X),a_z(Y)⟩_z,\]

    where $⟨\cdot,\cdot⟩_x$ denotes inner product on the CholeskySpace, $z$ is the cholesky factor of $p$, $a_z(W) = z (z^{-1}Wz^{-\mathrm{T}})_{\frac{1}{2}}$, and $(\cdot)_\frac{1}{2}$ denotes the lower triangular matrix with the diagonal multiplied by $\frac{1}{2}$

    source
    ManifoldsBase.parallel_transport_toMethod
    vector_transport_to(
    +    M::MetricManifold{SymmetricPositiveDefinite,LogCholeskyMetric},
    +    p,
    +    X,
    +    q,
    +    ::ParallelTransport,
    +)

    Parallel transport the tangent vector X at p along the geodesic to q with respect to the SymmetricPositiveDefinite manifold M and LogCholeskyMetric. The parallel transport is based on the parallel transport on CholeskySpace: Let $x$ and $y$ denote the cholesky factors of p and q, respectively and $W = x(x^{-1}Xx^{-\mathrm{T}})_\frac{1}{2}$, where $(\cdot)_\frac{1}{2}$ denotes the lower triangular matrix with the diagonal multiplied by $\frac{1}{2}$. With $V$ the parallel transport on CholeskySpace from $x$ to $y$. The formula hear reads

    \[\mathcal P_{q←p}X = yV^{\mathrm{T}} + Vy^{\mathrm{T}}.\]

    source

    Statistics

    Efficient representation

    When a point p is used in several occasions, it might be beneficial to store the eigenvalues and vectors of p and optionally its square root and the inverse of the square root. The SPDPoint can be used for exactly that.

    Manifolds.SPDPointType
    SPDPoint <: AbstractManifoldsPoint

    Store the result of eigen(p) of an SPD matrix and (optionally) $p^{1/2}$ and $p^{-1/2}$ to avoid their repeated computations.

    This result only has the result of eigen as a mandatory storage, the other three can be stored. If they are not stored they are computed and returned (but then still not stored) when required.

    Constructor

    SPDPoint(p::AbstractMatrix; store_p=true, store_sqrt=true, store_sqrt_inv=true)

    Create an SPD point using an symmetric positive defincite matrix p, where you can optionally store p, sqrt and sqrt_inv

    source

    and there are three internal functions to be able to use SPDPoint interchangeably with the default representation as a matrix.

    Manifolds.spd_sqrtFunction
    spd_sqrt(p::AbstractMatrix)
    +spd_sqrt(p::SPDPoint)

    return $p^{\frac{1}{2}}$ by either computing it (if it is missing or for the AbstractMatrix) or returning the stored value from within the SPDPoint.

    This method assumes that p represents an spd matrix.

    source
    Manifolds.spd_sqrt_invFunction
    spd_sqrt_inv(p::SPDPoint)

    return $p^{-\frac{1}{2}}$ by either computing it (if it is missing or for the AbstractMatrix) or returning the stored value from within the SPDPoint.

    This method assumes that p represents an spd matrix.

    source
    Manifolds.spd_sqrt_and_sqrt_invFunction
    spd_sqrt_and_sqrt_inv(p::AbstractMatrix)
    +spd_sqrt_and_sqrt_inv(p::SPDPoint)

    return $p^{\frac{1}{2}}$ and $p^{-\frac{1}{2}}$ by either computing them (if they are missing or for the AbstractMatrix) or returning their stored value from within the SPDPoint.

    Compared to calling single methods spd_sqrt and spd_sqrt_inv this method only computes the eigenvectors once for the case of the AbstractMatrix or if both are missing.

    This method assumes that p represents an spd matrix.

    source

    Literature

    diff --git a/v0.8.79/manifolds/symmetricpsdfixedrank.html b/v0.8.79/manifolds/symmetricpsdfixedrank.html new file mode 100644 index 0000000000..0447323571 --- /dev/null +++ b/v0.8.79/manifolds/symmetricpsdfixedrank.html @@ -0,0 +1,11 @@ + +Symmetric positive semidefinite fixed rank · Manifolds.jl

    Symmetric Positive Semidefinite Matrices of Fixed Rank

    Manifolds.SymmetricPositiveSemidefiniteFixedRankType
    SymmetricPositiveSemidefiniteFixedRank{n,k,𝔽} <: AbstractDecoratorManifold{𝔽}

    The AbstractManifold $ \operatorname{SPS}_k(n)$ consisting of the real- or complex-valued symmetric positive semidefinite matrices of size $n × n$ and rank $k$, i.e. the set

    \[\operatorname{SPS}_k(n) = \bigl\{ +p ∈ 𝔽^{n × n}\ \big|\ p^{\mathrm{H}} = p, +apa^{\mathrm{H}} \geq 0 \text{ for all } a ∈ 𝔽 +\text{ and } \operatorname{rank}(p) = k\bigr\},\]

    where $\cdot^{\mathrm{H}}$ denotes the Hermitian, i.e. complex conjugate transpose, and the field $𝔽 ∈ \{ ℝ, ℂ\}$. We sometimes $\operatorname{SPS}_{k,𝔽}(n)$, when distinguishing the real- and complex-valued manifold is important.

    An element is represented by $q ∈ 𝔽^{n × k}$ from the factorization $p = qq^{\mathrm{H}}$. Note that since for any unitary (orthogonal) $A ∈ 𝔽^{n × n}$ we have $(Aq)(Aq)^{\mathrm{H}} = qq^{\mathrm{H}} = p$, the representation is not unique, or in other words, the manifold is a quotient manifold of $𝔽^{n × k}$.

    The tangent space at $p$, $T_p\operatorname{SPS}_k(n)$, is also represented by matrices $Y ∈ 𝔽^{n × k}$ and reads as

    \[T_p\operatorname{SPS}_k(n) = \bigl\{ +X ∈ 𝔽^{n × n}\,|\,X = qY^{\mathrm{H}} + Yq^{\mathrm{H}} +\text{ i.e. } X = X^{\mathrm{H}} +\bigr\}.\]

    Note that the metric used yields a non-complete manifold. The metric was used in [JBAS10][MA20].

    Constructor

    SymmetricPositiveSemidefiniteFixedRank(n::Int, k::Int, field::AbstractNumbers=ℝ)

    Generate the manifold of $n × n$ symmetric positive semidefinite matrices of rank $k$ over the field of real numbers or complex numbers .

    source
    Base.expMethod
    exp(M::SymmetricPositiveSemidefiniteFixedRank, q, Y)

    Compute the exponential map on the SymmetricPositiveSemidefiniteFixedRank, which just reads

    \[ \exp_q Y = q+Y.\]

    Note

    Since the manifold is represented in the embedding and is a quotient manifold, the exponential and logarithmic map are a bijection only with respect to the equivalence classes. Computing

    \[ q_2 = \exp_p(\log_pq)\]

    might yield a matrix $q_2\neq q$, but they represent the same point on the quotient manifold, i.e. $d_{\operatorname{SPS}_k(n)}(q_2,q) = 0$.

    source
    Base.logMethod
    log(M::SymmetricPositiveSemidefiniteFixedRank, q, p)

    Compute the logarithmic map on the SymmetricPositiveSemidefiniteFixedRank manifold by minimizing $\lVert p - qY\rVert$ with respect to $Y$.

    Note

    Since the manifold is represented in the embedding and is a quotient manifold, the exponential and logarithmic map are a bijection only with respect to the equivalence classes. Computing

    \[ q_2 = \exp_p(\log_pq)\]

    might yield a matrix $q_2\neq q$, but they represent the same point on the quotient manifold, i.e. $d_{\operatorname{SPS}_k(n)}(q_2,q) = 0$.

    source
    ManifoldsBase._isapproxMethod
    isapprox(M::SymmetricPositiveSemidefiniteFixedRank, p, q; kwargs...)

    test, whether two points p, q are (approximately) nearly the same. Since this is a quotient manifold in the embedding, the test is performed by checking their distance, if they are not the same, i.e. that $d_{\mathcal M}(p,q) \approx 0$, where the comparison is performed with the classical isapprox. The kwargs... are passed on to this accordingly.

    source
    ManifoldsBase.check_pointMethod
    check_point(M::SymmetricPositiveSemidefiniteFixedRank{n,𝔽}, q; kwargs...)

    Check whether q is a valid manifold point on the SymmetricPositiveSemidefiniteFixedRank M, i.e. whether p=q*q' is a symmetric matrix of size (n,n) with values from the corresponding AbstractNumbers 𝔽. The symmetry of p is not explicitly checked since by using q p is symmetric by construction. The tolerance for the symmetry of p can and the rank of q*q' be set using kwargs....

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::SymmetricPositiveSemidefiniteFixedRank{n,k,𝔽}, p, X; kwargs... )

    Check whether X is a tangent vector to manifold point p on the SymmetricPositiveSemidefiniteFixedRank M, i.e. X has to be a symmetric matrix of size (n,n) and its values have to be from the correct AbstractNumbers.

    Due to the reduced representation this is fulfilled as soon as the matrix is of correct size.

    source
    ManifoldsBase.manifold_dimensionMethod
    manifold_dimension(M::SymmetricPositiveSemidefiniteFixedRank{n,k,𝔽})

    Return the dimension of the SymmetricPositiveSemidefiniteFixedRank matrix M over the number system 𝔽, i.e.

    \[\begin{aligned} +\dim \operatorname{SPS}_{k,ℝ}(n) &= kn - \frac{k(k-1)}{2},\\ +\dim \operatorname{SPS}_{k,ℂ}(n) &= 2kn - k^2, +\end{aligned}\]

    where the last $k^2$ is due to the zero imaginary part for Hermitian matrices diagonal

    source
    ManifoldsBase.vector_transport_toMethod
    vector_transport_to(M::SymmetricPositiveSemidefiniteFixedRank, p, X, q)

    transport the tangent vector X at p to q by projecting it onto the tangent space at q.

    source
    diff --git a/v0.8.79/manifolds/symplectic.html b/v0.8.79/manifolds/symplectic.html new file mode 100644 index 0000000000..39f6cf2142 --- /dev/null +++ b/v0.8.79/manifolds/symplectic.html @@ -0,0 +1,111 @@ + +Symplectic · Manifolds.jl

    Symplectic

    The Symplectic manifold, denoted $\operatorname{Sp}(2n, \mathbb{F})$, is a closed, embedded, submanifold of $\mathbb{F}^{2n \times 2n}$ that represents transformations into symplectic subspaces which keep the canonical symplectic form over $\mathbb{F}^{2n \times 2n }$ invariant under the standard embedding inner product. The canonical symplectic form is a non-degenerate bilinear and skew symmetric map $\omega\colon \mathbb{F}^{2n} \times \mathbb{F}^{2n} \rightarrow \mathbb{F}$, given by $\omega(x, y) = x^T Q_{2n} y$ for elements $x, y \in \mathbb{F}^{2n}$, with

    \[ Q_{2n} = + \begin{bmatrix} + 0_n & I_n \\ + -I_n & 0_n + \end{bmatrix}.\]

    That means that an element $p \in \operatorname{Sp}(2n)$ must fulfill the requirement that

    \[ \omega (p x, p y) = x^T(p^TQp)y = x^TQy = \omega(x, y),\]

    leading to the requirement on $p$ that $p^TQp = Q$.

    The symplectic manifold also forms a group under matrix multiplication, called the $\textit{symplectic group}$. Since all the symplectic matrices necessarily have determinant one, the symplectic group $\operatorname{Sp}(2n, \mathbb{F})$ is a subgroup of the special linear group, $\operatorname{SL}(2n, \mathbb{F})$. When the underlying field is either $\mathbb{R}$ or $\mathbb{C}$ the symplectic group with a manifold structure constitutes a Lie group, with the Lie Algebra

    \[ \mathfrak{sp}(2n,F) = \{H \in \mathbb{F}^{2n \times 2n} \;|\; Q H + H^{T} Q = 0\}.\]

    This set is also known as the Hamiltonian matrices, which have the property that $(QH)^T = QH$ and are commonly used in physics.

    Manifolds.ExtendedSymplecticMetricType
    ExtendedSymplecticMetric <: AbstractMetric

    The extension of the RealSymplecticMetric at a point p \in \operatorname{Sp}(2n) as an inner product over the embedding space $ℝ^{2n \times 2n}$, i.e.

    \[ \langle x, y \rangle_{p} = \langle p^{-1}x, p^{-1}\rangle_{\operatorname{Fr}} + = \operatorname{tr}(x^{\mathrm{T}}(pp^{\mathrm{T}})^{-1}y), \;\forall\; x, y \in ℝ^{2n \times 2n}.\]

    source
    Manifolds.RealSymplecticMetricType
    RealSymplecticMetric <: RiemannianMetric

    The canonical Riemannian metric on the symplectic manifold, defined pointwise for $p \in \operatorname{Sp}(2n)$ by [Fio11]]

    \[\begin{align*} + & g_p \colon T_p\operatorname{Sp}(2n) \times T_p\operatorname{Sp}(2n) \rightarrow ℝ, \\ + & g_p(Z_1, Z_2) = \operatorname{tr}((p^{-1}Z_1)^{\mathrm{T}} (p^{-1}Z_2)). +\end{align*}\]

    This metric is also the default metric for the Symplectic manifold.

    source
    Manifolds.SymplecticType
    Symplectic{n, 𝔽} <: AbstractEmbeddedManifold{𝔽, DefaultIsometricEmbeddingType}

    The symplectic manifold consists of all $2n \times 2n$ matrices which preserve the canonical symplectic form over $𝔽^{2n × 2n} \times 𝔽^{2n × 2n}$,

    \[ \omega\colon 𝔽^{2n × 2n} \times 𝔽^{2n × 2n} \rightarrow 𝔽, + \quad \omega(x, y) = p^{\mathrm{T}} Q_{2n} q, \; x, y \in 𝔽^{2n × 2n},\]

    where

    \[Q_{2n} = +\begin{bmatrix} + 0_n & I_n \\ + -I_n & 0_n +\end{bmatrix}.\]

    That is, the symplectic manifold consists of

    \[\operatorname{Sp}(2n, ℝ) = \bigl\{ p ∈ ℝ^{2n × 2n} \, \big| \, p^{\mathrm{T}}Q_{2n}p = Q_{2n} \bigr\},\]

    with $0_n$ and $I_n$ denoting the $n × n$ zero-matrix and indentity matrix in $ℝ^{n \times n}$ respectively.

    The tangent space at a point $p$ is given by [BZ21]

    \[\begin{align*} + T_p\operatorname{Sp}(2n) + &= \{X \in \mathbb{R}^{2n \times 2n} \;|\; p^{T}Q_{2n}X + X^{T}Q_{2n}p = 0 \}, \\ + &= \{X = pQS \;|\; S ∈ R^{2n × 2n}, S^{\mathrm{T}} = S \}. +\end{align*}\]

    Constructor

    Symplectic(2n, field=ℝ) -> Symplectic{div(2n, 2), field}()

    Generate the (real-valued) symplectic manifold of $2n \times 2n$ symplectic matrices. The constructor for the Symplectic manifold accepts the even column/row embedding dimension $2n$ for the real symplectic manifold, $ℝ^{2n × 2n}$.

    source
    Manifolds.SymplecticMatrixType
    SymplecticMatrix{T}

    A lightweight structure to represent the action of the matrix representation of the canonical symplectic form,

    \[Q_{2n}(λ) = λ +\begin{bmatrix} +0_n & I_n \\ + -I_n & 0_n +\end{bmatrix} \quad \in ℝ^{2n \times 2n},\]

    such that the canonical symplectic form is represented by

    \[\omega_{2n}(x, y) = x^{\mathrm{T}}Q_{2n}(1)y, \quad x, y \in ℝ^{2n}.\]

    The entire matrix is however not instantiated in memory, instead a scalar $λ$ of type T is stored, which is used to keep track of scaling and transpose operations applied to each SymplecticMatrix. For example, given Q = SymplecticMatrix(1.0) represented as 1.0*[0 I; -I 0], the adjoint Q' returns SymplecticMatrix(-1.0) = (-1.0)*[0 I; -I 0].

    source
    Base.expMethod
    exp(M::Symplectic, p, X)
    +exp!(M::Symplectic, q, p, X)

    The Exponential mapping on the Symplectic manifold with the RealSymplecticMetric Riemannian metric.

    For the point $p \in \operatorname{Sp}(2n)$ the exponential mapping along the tangent vector $X \in T_p\operatorname{Sp}(2n)$ is computed as [WSF18]

    \[ \operatorname{exp}_p(X) = p \operatorname{Exp}((p^{-1}X)^{\mathrm{T}}) + \operatorname{Exp}(p^{-1}X - (p^{-1}X)^{\mathrm{T}}),\]

    where $\operatorname{Exp}(\cdot)$ denotes the matrix exponential.

    source
    Base.invMethod
    inv(::Symplectic, A)
    +inv!(::Symplectic, A)

    Compute the symplectic inverse $A^+$ of matrix $A ∈ ℝ^{2n × 2n}$. Given a matrix

    \[A ∈ ℝ^{2n × 2n},\quad +A = +\begin{bmatrix} +A_{1,1} & A_{1,2} \\ +A_{2,1} & A_{2, 2} +\end{bmatrix}\]

    the symplectic inverse is defined as:

    \[A^{+} := Q_{2n}^{\mathrm{T}} A^{\mathrm{T}} Q_{2n},\]

    where

    \[Q_{2n} = +\begin{bmatrix} +0_n & I_n \\ + -I_n & 0_n +\end{bmatrix}.\]

    The symplectic inverse of A can be expressed explicitly as:

    \[A^{+} = +\begin{bmatrix} + A_{2, 2}^{\mathrm{T}} & -A_{1, 2}^{\mathrm{T}} \\[1.2mm] + -A_{2, 1}^{\mathrm{T}} & A_{1, 1}^{\mathrm{T}} +\end{bmatrix}.\]

    source
    Base.randMethod
    rand(::SymplecticStiefel; vector_at=nothing,
    +    hamiltonian_norm = (vector_at === nothing ? 1/2 : 1.0))

    Generate a random point on $\operatorname{Sp}(2n)$ or a random tangent vector $X \in T_p\operatorname{Sp}(2n)$ if vector_at is set to a point $p \in \operatorname{Sp}(2n)$.

    A random point on $\operatorname{Sp}(2n)$ is constructed by generating a random Hamiltonian matrix $Ω \in \mathfrak{sp}(2n,F)$ with norm hamiltonian_norm, and then transforming it to a symplectic matrix by applying the Cayley transform

    \[ \operatorname{cay}\colon \mathfrak{sp}(2n,F) \rightarrow \operatorname{Sp}(2n), + \; \Omega \mapsto (I - \Omega)^{-1}(I + \Omega).\]

    To generate a random tangent vector in $T_p\operatorname{Sp}(2n)$, this code employs the second tangent vector space parametrization of Symplectic. It first generates a random symmetric matrix $S$ by S = randn(2n, 2n) and then symmetrizes it as S = S + S'. Then $S$ is normalized to have Frobenius norm of hamiltonian_norm and X = pQS is returned, where Q is the SymplecticMatrix.

    source
    ManifoldDiff.gradientMethod
    gradient(M::Symplectic, f, p, backend::RiemannianProjectionBackend;
    +         extended_metric=true)
    +gradient!(M::Symplectic, f, p, backend::RiemannianProjectionBackend;
    +         extended_metric=true)

    Compute the manifold gradient $\text{grad}f(p)$ of a scalar function $f \colon \operatorname{Sp}(2n) \rightarrow ℝ$ at $p \in \operatorname{Sp}(2n)$.

    The element $\text{grad}f(p)$ is found as the Riesz representer of the differential $\text{D}f(p) \colon T_p\operatorname{Sp}(2n) \rightarrow ℝ$ w.r.t. the Riemannian metric inner product at $p$ [Fio11]]. That is, $\text{grad}f(p) \in T_p\operatorname{Sp}(2n)$ solves the relation

    \[ g_p(\text{grad}f(p), X) = \text{D}f(p) \quad\forall\; X \in T_p\operatorname{Sp}(2n).\]

    The default behaviour is to first change the representation of the Euclidean gradient from the Euclidean metric to the RealSymplecticMetric at $p$, and then we projecting the result onto the correct tangent tangent space $T_p\operatorname{Sp}(2n, ℝ)$ w.r.t the Riemannian metric $g_p$ extended to the entire embedding space.

    Arguments:

    • extended_metric = true: If true, compute the gradient $\text{grad}f(p)$ by first changing the representer of the Euclidean gradient of a smooth extension of $f$, $∇f(p)$, w.r.t. the RealSymplecticMetric at $p$ extended to the entire embedding space, before projecting onto the correct tangent vector space w.r.t. the same extended metric $g_p$. If false, compute the gradient by first projecting $∇f(p)$ onto the tangent vector space, before changing the representer in the tangent vector space to comply with the RealSymplecticMetric.
    source
    Manifolds.project_normal!Method
    project_normal!(::MetricManifold{𝔽,Euclidean,ExtendedSymplecticMetric}, Y, p, X)

    Project onto the normal of the tangent space $(T_p\operatorname{Sp}(2n))^{\perp_g}$ at a point $p ∈ \operatorname{Sp}(2n)$, relative to the riemannian metric $g$ RealSymplecticMetric. That is,

    \[(T_p\operatorname{Sp}(2n))^{\perp_g} = \{Y \in \mathbb{R}^{2n \times 2n} : + g_p(Y, X) = 0 \;\forall\; X \in T_p\operatorname{Sp}(2n)\}.\]

    The closed form projection operator onto the normal space is given by [GSAS21]

    \[\operatorname{P}^{(T_p\operatorname{Sp}(2n))\perp}_{g_p}(X) = pQ\operatorname{skew}(p^{\mathrm{T}}Q^{\mathrm{T}}X),\]

    where $\operatorname{skew}(A) = \frac{1}{2}(A - A^{\mathrm{T}})$. This function is not exported.

    source
    Manifolds.symplectic_inverse_timesMethod
    symplectic_inverse_times(::Symplectic, p, q)
    +symplectic_inverse_times!(::Symplectic, A, p, q)

    Directly compute the symplectic inverse of $p \in \operatorname{Sp}(2n)$, multiplied with $q \in \operatorname{Sp}(2n)$. That is, this function efficiently computes $p^+q = (Q_{2n}p^{\mathrm{T}}Q_{2n})q \in ℝ^{2n \times 2n}$, where $Q_{2n}$ is the SymplecticMatrix of size $2n \times 2n$.

    source
    ManifoldsBase.change_representerMethod
    change_representer(::Symplectic, ::EuclideanMetric, p, X)
    +change_representer!(::Symplectic, Y, ::EuclideanMetric, p, X)

    Compute the representation of a tangent vector $ξ ∈ T_p\operatorname{Sp}(2n, ℝ)$ s.t.

    \[ g_p(c_p(ξ), η) = ⟨ξ, η⟩^{\text{Euc}} \;∀\; η ∈ T_p\operatorname{Sp}(2n, ℝ).\]

    with the conversion function

    \[ c_p : T_p\operatorname{Sp}(2n, ℝ) \rightarrow T_p\operatorname{Sp}(2n, ℝ), \quad + c_p(ξ) = \frac{1}{2} pp^{\mathrm{T}} ξ + \frac{1}{2} pQ ξ^{\mathrm{T}} pQ.\]

    Each of the terms $c_p^1(ξ) = p p^{\mathrm{T}} ξ$ and $c_p^2(ξ) = pQ ξ^{\mathrm{T}} pQ$ from the above definition of $c_p(η)$ are themselves metric compatible in the sense that

    \[ c_p^i : T_p\operatorname{Sp}(2n, ℝ) \rightarrow \mathbb{R}^{2n \times 2n}\quad + g_p^i(c_p(ξ), η) = ⟨ξ, η⟩^{\text{Euc}} \;∀\; η ∈ T_p\operatorname{Sp}(2n, ℝ),\]

    for $i \in {1, 2}$. However the range of each function alone is not confined to $T_p\operatorname{Sp}(2n, ℝ)$, but the convex combination

    \[ c_p(ξ) = \frac{1}{2}c_p^1(ξ) + \frac{1}{2}c_p^2(ξ)\]

    does have the correct range $T_p\operatorname{Sp}(2n, ℝ)$.

    source
    ManifoldsBase.change_representerMethod
    change_representer(MetMan::MetricManifold{𝔽, Euclidean{Tuple{m, n}, 𝔽}, ExtendedSymplecticMetric},
    +                   EucMet::EuclideanMetric, p, X)
    +change_representer!(MetMan::MetricManifold{𝔽, Euclidean{Tuple{m, n}, 𝔽}, ExtendedSymplecticMetric},
    +                    Y, EucMet::EuclideanMetric, p, X)

    Change the representation of a matrix $ξ ∈ \mathbb{R}^{2n \times 2n}$ into the inner product space $(ℝ^{2n \times 2n}, g_p)$ where the inner product is given by $g_p(ξ, η) = \langle p^{-1}ξ, p^{-1}η \rangle = \operatorname{tr}(ξ^{\mathrm{T}}(pp^{\mathrm{T}})^{-1}η)$, as the extension of the RealSymplecticMetric onto the entire embedding space.

    By changing the representation we mean to apply a mapping

    \[ c_p : \mathbb{R}^{2n \times 2n} \rightarrow \mathbb{R}^{2n \times 2n},\]

    defined by requiring that it satisfy the metric compatibility condition

    \[ g_p(c_p(ξ), η) = ⟨p^{-1}c_p(ξ), p^{-1}η⟩ = ⟨ξ, η⟩^{\text{Euc}} + \;∀\; η ∈ T_p\operatorname{Sp}(2n, ℝ).\]

    In this case, we compute the mapping

    \[ c_p(ξ) = pp^{\mathrm{T}} ξ.\]

    source
    ManifoldsBase.check_pointMethod
    check_point(M::Symplectic, p; kwargs...)

    Check whether p is a valid point on the Symplectic M=$\operatorname{Sp}(2n)$, i.e. that it has the right AbstractNumbers type and $p^{+}p$ is (approximately) the identity, where $A^{+} = Q_{2n}^{\mathrm{T}}A^{\mathrm{T}}Q_{2n}$ is the symplectic inverse, with

    \[Q_{2n} = +\begin{bmatrix} +0_n & I_n \\ + -I_n & 0_n +\end{bmatrix}.\]

    The tolerance can be set with kwargs... (e.g. atol = 1.0e-14).

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::Symplectic, p, X; kwargs...)

    Checks whether X is a valid tangent vector at p on the Symplectic M=$\operatorname{Sp}(2n)$, i.e. the AbstractNumbers fits and it (approximately) holds that $p^{T}Q_{2n}X + X^{T}Q_{2n}p = 0$, where

    \[Q_{2n} = +\begin{bmatrix} +0_n & I_n \\ + -I_n & 0_n +\end{bmatrix}.\]

    The tolerance can be set with kwargs... (e.g. atol = 1.0e-14).

    source
    ManifoldsBase.distanceMethod
    distance(M::Symplectic, p, q)

    Compute an approximate geodesic distance between two Symplectic matrices $p, q \in \operatorname{Sp}(2n)$, as done in [WSF18].

    \[ \operatorname{dist}(p, q) + ≈ ||\operatorname{Log}(p^+q)||_{\operatorname{Fr}},\]

    where the $\operatorname{Log}(\cdot)$ operator is the matrix logarithm.

    This approximation is justified by first recalling the Baker-Campbell-Hausdorf formula,

    \[\operatorname{Log}(\operatorname{Exp}(A)\operatorname{Exp}(B)) + = A + B + \frac{1}{2}[A, B] + \frac{1}{12}[A, [A, B]] + \frac{1}{12}[B, [B, A]] + + \ldots \;.\]

    Then we write the expression for the exponential map from $p$ to $q$ as

    \[ q = + \operatorname{exp}_p(X) + = + p \operatorname{Exp}((p^{+}X)^{\mathrm{T}}) + \operatorname{Exp}([p^{+}X - (p^{+}X)^{\mathrm{T}}]), + X \in T_p\operatorname{Sp},\]

    and with the geodesic distance between $p$ and $q$ given by $\operatorname{dist}(p, q) = ||X||_p = ||p^+X||_{\operatorname{Fr}}$ we see that

    \[ \begin{align*} + ||\operatorname{Log}(p^+q)||_{\operatorname{Fr}} + &= ||\operatorname{Log}\left( + \operatorname{Exp}((p^{+}X)^{\mathrm{T}}) + \operatorname{Exp}(p^{+}X - (p^{+}X)^{\mathrm{T}}) + \right)||_{\operatorname{Fr}} \\ + &= ||p^{+}X + \frac{1}{2}[(p^{+}X)^{\mathrm{T}}, p^{+}X - (p^{+}X)^{\mathrm{T}}] + + \ldots ||_{\operatorname{Fr}} \\ + &≈ ||p^{+}X||_{\operatorname{Fr}} = \operatorname{dist}(p, q). + \end{align*}\]

    source
    ManifoldsBase.innerMethod
    inner(::Symplectic{n, ℝ}, p, X, Y)

    Compute the canonical Riemannian inner product RealSymplecticMetric

    \[ g_p(X, Y) = \operatorname{tr}((p^{-1}X)^{\mathrm{T}} (p^{-1}Y))\]

    between the two tangent vectors $X, Y \in T_p\operatorname{Sp}(2n)$.

    source
    ManifoldsBase.inverse_retractMethod
    inverse_retract(M::Symplectic, p, q, ::CayleyInverseRetraction)

    Compute the Cayley Inverse Retraction $X = \mathcal{L}_p^{\operatorname{Sp}}(q)$ such that the Cayley Retraction from $p$ along $X$ lands at $q$, i.e. $\mathcal{R}_p(X) = q$ [BZ21].

    First, recall the definition the standard symplectic matrix

    \[Q = +\begin{bmatrix} + 0 & I \\ +-I & 0 +\end{bmatrix}\]

    as well as the symplectic inverse of a matrix $A$, $A^{+} = Q^{\mathrm{T}} A^{\mathrm{T}} Q$.

    For $p, q ∈ \operatorname{Sp}(2n, ℝ)$ then, we can then define the inverse cayley retraction as long as the following matrices exist.

    \[ U = (I + p^+ q)^{-1}, \quad V = (I + q^+ p)^{-1}.\]

    If that is the case, the inverse cayley retration at $p$ applied to $q$ is

    \[\mathcal{L}_p^{\operatorname{Sp}}(q) = 2p\bigl(V - U\bigr) + 2\bigl((p + q)U - p\bigr) + ∈ T_p\operatorname{Sp}(2n).\]

    [BZ21]: > Bendokat, Thomas and Zimmermann, Ralf: > The real symplectic Stiefel and Grassmann manifolds: metrics, geodesics and applications > arXiv preprint arXiv:2108.12447, 2021.

    source
    ManifoldsBase.manifold_dimensionMethod
    manifold_dimension(::Symplectic{n})

    Returns the dimension of the symplectic manifold embedded in $ℝ^{2n \times 2n}$, i.e.

    \[ \operatorname{dim}(\operatorname{Sp}(2n)) = (2n + 1)n.\]

    source
    ManifoldsBase.project!Method
    project!(::MetricManifold{𝔽,Euclidean,ExtendedSymplecticMetric}, Y, p, X) where {𝔽}

    Compute the projection of $X ∈ R^{2n × 2n}$ onto $T_p\operatorname{Sp}(2n, ℝ)$ w.r.t. the Riemannian metric $g$ RealSymplecticMetric. The closed form projection mapping is given by [GSAS21]

    \[ \operatorname{P}^{T_p\operatorname{Sp}(2n)}_{g_p}(X) = pQ\operatorname{sym}(p^{\mathrm{T}}Q^{\mathrm{T}}X),\]

    where $\operatorname{sym}(A) = \frac{1}{2}(A + A^{\mathrm{T}})$. This function is not exported.

    source
    ManifoldsBase.projectMethod
    project(::Symplectic, p, A)
    +project!(::Symplectic, Y, p, A)

    Given a point $p \in \operatorname{Sp}(2n)$, project an element $A \in \mathbb{R}^{2n \times 2n}$ onto the tangent space $T_p\operatorname{Sp}(2n)$ relative to the euclidean metric of the embedding $\mathbb{R}^{2n \times 2n}$.

    That is, we find the element $X \in T_p\operatorname{SpSt}(2n, 2k)$ which solves the constrained optimization problem

    \[ \operatorname{min}_{X \in \mathbb{R}^{2n \times 2n}} \frac{1}{2}||X - A||^2, \quad + \text{s.t.}\; + h(X) \colon= X^{\mathrm{T}} Q p + p^{\mathrm{T}} Q X = 0,\]

    where $h\colon\mathbb{R}^{2n \times 2n} \rightarrow \operatorname{skew}(2n)$ defines the restriction of $X$ onto the tangent space $T_p\operatorname{SpSt}(2n, 2k)$.

    source
    ManifoldsBase.retractMethod
    retract(::Symplectic, p, X, ::CayleyRetraction)
    +retract!(::Symplectic, q, p, X, ::CayleyRetraction)

    Compute the Cayley retraction on $p ∈ \operatorname{Sp}(2n, ℝ)$ in the direction of tangent vector $X ∈ T_p\operatorname{Sp}(2n, ℝ)$, as defined in by Birtea et al in proposition 2 [BCC20].

    Using the symplectic inverse of a matrix $A \in ℝ^{2n \times 2n}$, $A^{+} := Q_{2n}^{\mathrm{T}} A^{\mathrm{T}} Q_{2n}$ where

    \[Q_{2n} = +\begin{bmatrix} +0_n & I_n \\ + -I_n & 0_n +\end{bmatrix},\]

    the retraction $\mathcal{R}\colon T\operatorname{Sp}(2n) \rightarrow \operatorname{Sp}(2n)$ is defined pointwise as

    \[\begin{align*} +\mathcal{R}_p(X) &= p \operatorname{cay}\left(\frac{1}{2}p^{+}X\right), \\ + &= p \operatorname{exp}_{1/1}(p^{+}X), \\ + &= p (2I - p^{+}X)^{-1}(2I + p^{+}X). +\end{align*}\]

    Here $\operatorname{exp}_{1/1}(z) = (2 - z)^{-1}(2 + z)$ denotes the Padé (1, 1) approximation to $\operatorname{exp}(z)$.

    source

    Literature

    [BZ21]
    +
    +
    T. Bendokat and R. Zimmermann. The real symplectic Stiefel and Grassmann manifolds: metrics, geodesics and applications, arXiv Preprint, 2108.12447 (2021).
    +
    [BCC20]
    +
    +
    P. Birtea, I. Caçu and D. Comănescu. Optimization on the real symplectic group. Monatshefte für Mathematik 191, 465–485 (2020).
    +
    [Fio11]
    +
    +
    S. Fiori. Solving Minimal-Distance Problems over the Manifold of Real-Symplectic Matrices. SIAM Journal on Matrix Analysis and Applications 32, 938–968 (2011).
    +
    [GSAS21]
    +
    +
    B. Gao, N. T. Son, P.-A. Absil and T. Stykel. Riemannian Optimization on the Symplectic Stiefel Manifold. SIAM Journal on Optimization 31, 1546–1575 (2021).
    +
    [WSF18]
    +
    +
    J. Wang, H. Sun and S. Fiori. A Riemannian-steepest-descent approach for optimization on the real symplectic group. Mathematical Methods in the Applied Science 41, 4273–4286 (2018).
    +
    +
    diff --git a/v0.8.79/manifolds/symplecticstiefel.html b/v0.8.79/manifolds/symplecticstiefel.html new file mode 100644 index 0000000000..f4c0c80d4a --- /dev/null +++ b/v0.8.79/manifolds/symplecticstiefel.html @@ -0,0 +1,82 @@ + +Symplectic Stiefel · Manifolds.jl

    Symplectic Stiefel

    The SymplecticStiefel manifold, denoted $\operatorname{SpSt}(2n, 2k)$, represents canonical symplectic bases of $2k$ dimensonal symplectic subspaces of $\mathbb{R}^{2n \times 2n}$. This means that the columns of each element $p \in \operatorname{SpSt}(2n, 2k) \subset \mathbb{R}^{2n \times 2k}$ constitute a canonical symplectic basis of $\operatorname{span}(p)$. The canonical symplectic form is a non-degenerate, bilinear, and skew symmetric map $\omega_{2k}\colon \mathbb{F}^{2k} \times \mathbb{F}^{2k} \rightarrow \mathbb{F}$, given by $\omega_{2k}(x, y) = x^T Q_{2k} y$ for elements $x, y \in \mathbb{F}^{2k}$, with

    \[ Q_{2k} = + \begin{bmatrix} + 0_k & I_k \\ + -I_k & 0_k + \end{bmatrix}.\]

    Specifically given an element $p \in \operatorname{SpSt}(2n, 2k)$ we require that

    \[ \omega_{2n} (p x, p y) = x^T(p^TQ_{2n}p)y = x^TQ_{2k}y = \omega_{2k}(x, y) \;\forall\; x, y \in \mathbb{F}^{2k},\]

    leading to the requirement on $p$ that $p^TQ_{2n}p = Q_{2k}$. In the case that $k = n$, this manifold reduces to the Symplectic manifold, which is also known as the symplectic group.

    Manifolds.SymplecticStiefelType
    SymplecticStiefel{n, k, 𝔽} <: AbstractEmbeddedManifold{𝔽, DefaultIsometricEmbeddingType}

    The symplectic Stiefel manifold consists of all $2n × 2k, \; n \geq k$ matrices satisfying the requirement

    \[\operatorname{SpSt}(2n, 2k, ℝ) + = \bigl\{ p ∈ ℝ^{2n × 2n} \, \big| \, p^{\mathrm{T}}Q_{2n}p = Q_{2k} \bigr\},\]

    where

    \[Q_{2n} = +\begin{bmatrix} + 0_n & I_n \\ + -I_n & 0_n +\end{bmatrix}.\]

    The symplectic Stiefel tangent space at $p$ can be parametrized as [BZ21]

    \[ \begin{align*} + T_p\operatorname{SpSt}(2n, 2k) + = \{&X \in \mathbb{R}^{2n \times 2k} \;|\; p^{T}Q_{2n}X + X^{T}Q_{2n}p = 0 \}, \\ + = \{&X = pΩ + p^sB \;|\; + Ω ∈ ℝ^{2k × 2k}, Ω^+ = -Ω, \\ + &\; p^s ∈ \operatorname{SpSt}(2n, 2(n- k)), B ∈ ℝ^{2(n-k) × 2k}, \}, + \end{align*}\]

    where $Ω \in \mathfrak{sp}(2n,F)$ is Hamiltonian and $p^s$ means the symplectic complement of $p$ s.t. $p^{+}p^{s} = 0$.

    Constructor

    SymplecticStiefel(2n::Int, 2k::Int, field::AbstractNumbers=ℝ)
    +    -> SymplecticStiefel{div(2n, 2), div(2k, 2), field}()

    Generate the (real-valued) symplectic Stiefel manifold of $2n \times 2k$ matrices which span a $2k$ dimensional symplectic subspace of $ℝ^{2n \times 2n}$. The constructor for the SymplecticStiefel manifold accepts the even column dimension $2n$ and an even number of columns $2k$ for the real symplectic Stiefel manifold with elements $p \in ℝ^{2n × 2k}$.

    source
    Base.expMethod
    exp(::SymplecticStiefel, p, X)
    +exp!(M::SymplecticStiefel, q, p, X)

    Compute the exponential mapping

    \[ \operatorname{exp}\colon T\operatorname{SpSt}(2n, 2k) + \rightarrow \operatorname{SpSt}(2n, 2k)\]

    at a point $p \in \operatorname{SpSt}(2n, 2k)$ in the direction of $X \in T_p\operatorname{SpSt}(2n, 2k)$.

    The tangent vector $X$ can be written in the form $X = \bar{\Omega}p$ [BZ21], with

    \[ \bar{\Omega} = X (p^{\mathrm{T}}p)^{-1}p^{\mathrm{T}} + + Q_{2n}p(p^{\mathrm{T}}p)^{-1}X^{\mathrm{T}}(I_{2n} - Q_{2n}^{\mathrm{T}}p(p^{\mathrm{T}}p)^{-1}p^{\mathrm{T}}Q_{2n})Q_{2n} + \in ℝ^{2n \times 2n},\]

    where $Q_{2n}$ is the SymplecticMatrix. Using this expression for $X$, the exponential mapping can be computed as

    \[ \operatorname{exp}_p(X) = \operatorname{Exp}([\bar{\Omega} - \bar{\Omega}^{\mathrm{T}}]) + \operatorname{Exp}(\bar{\Omega}^{\mathrm{T}})p,\]

    where $\operatorname{Exp}(\cdot)$ denotes the matrix exponential.

    Computing the above mapping directly however, requires taking matrix exponentials of two $2n \times 2n$ matrices, which is computationally expensive when $n$ increases. Therefore we instead follow [BZ21] who express the above exponential mapping in a way which only requires taking matrix exponentials of an $8k \times 8k$ matrix and a $4k \times 4k$ matrix.

    To this end, first define

    \[\bar{A} = Q_{2k}p^{\mathrm{T}}X(p^{\mathrm{T}}p)^{-1}Q_{2k} + + (p^{\mathrm{T}}p)^{-1}X^{\mathrm{T}}(p - Q_{2n}^{\mathrm{T}}p(p^{\mathrm{T}}p)^{-1}Q_{2k}) \in ℝ^{2k \times 2k},\]

    and

    \[\bar{H} = (I_{2n} - pp^+)Q_{2n}X(p^{\mathrm{T}}p)^{-1}Q_{2k} \in ℝ^{2n \times 2k}.\]

    We then let $\bar{\Delta} = p\bar{A} + \bar{H}$, and define the matrices

    \[ γ = \left[\left(I_{2n} - \frac{1}{2}pp^+\right)\bar{\Delta} \quad + -p \right] \in ℝ^{2n \times 4k},\]

    and

    \[ λ = \left[Q_{2n}^{\mathrm{T}}pQ_{2k} \quad + \left(\bar{\Delta}^+\left(I_{2n} + - \frac{1}{2}pp^+\right)\right)^{\mathrm{T}}\right] \in ℝ^{2n \times 4k}.\]

    With the above defined matrices it holds that $\bar{\Omega} = λγ^{\mathrm{T}}$. As a last preliminary step, concatenate $γ$ and $λ$ to define the matrices $Γ = [λ \quad -γ] \in ℝ^{2n \times 8k}$ and $Λ = [γ \quad λ] \in ℝ^{2n \times 8k}$.

    With these matrix constructions done, we can compute the exponential mapping as

    \[ \operatorname{exp}_p(X) = + Γ \operatorname{Exp}(ΛΓ^{\mathrm{T}}) + \begin{bmatrix} + 0_{4k} \\ + I_{4k} + \end{bmatrix} + \operatorname{Exp}(λγ^{\mathrm{T}}) + \begin{bmatrix} + 0_{2k} \\ + I_{2k} + \end{bmatrix}.\]

    which only requires computing the matrix exponentials of $ΛΓ^{\mathrm{T}} \in ℝ^{8k \times 8k}$ and $λγ^{\mathrm{T}} \in ℝ^{4k \times 4k}$.

    source
    Base.invMethod
    inv(::SymplecticStiefel{n, k}, A)
    +inv!(::SymplecticStiefel{n, k}, q, p)

    Compute the symplectic inverse $A^+$ of matrix $A ∈ ℝ^{2n × 2k}$. Given a matrix

    \[A ∈ ℝ^{2n × 2k},\quad +A = +\begin{bmatrix} +A_{1, 1} & A_{1, 2} \\ +A_{2, 1} & A_{2, 2} +\end{bmatrix},\; A_{i, j} \in ℝ^{2n × 2k}\]

    the symplectic inverse is defined as:

    \[A^{+} := Q_{2k}^{\mathrm{T}} A^{\mathrm{T}} Q_{2n},\]

    where

    \[Q_{2n} = +\begin{bmatrix} +0_n & I_n \\ + -I_n & 0_n +\end{bmatrix}.\]

    For any $p \in \operatorname{SpSt}(2n, 2k)$ we have that $p^{+}p = I_{2k}$.

    The symplectic inverse of a matrix A can be expressed explicitly as:

    \[A^{+} = +\begin{bmatrix} + A_{2, 2}^{\mathrm{T}} & -A_{1, 2}^{\mathrm{T}} \\[1.2mm] + -A_{2, 1}^{\mathrm{T}} & A_{1, 1}^{\mathrm{T}} +\end{bmatrix}.\]

    source
    Base.randMethod
    rand(M::SymplecticStiefel; vector_at=nothing,
    +    hamiltonian_norm=(vector_at === nothing ? 1/2 : 1.0))

    Generate a random point $p \in \operatorname{SpSt}(2n, 2k)$ or a random tangent vector $X \in T_p\operatorname{SpSt}(2n, 2k)$ if vector_at is set to a point $p \in \operatorname{Sp}(2n)$.

    A random point on $\operatorname{SpSt}(2n, 2k)$ is found by first generating a random point on the symplectic manifold $\operatorname{Sp}(2n)$, and then projecting onto the Symplectic Stiefel manifold using the canonical_project $π_{\operatorname{SpSt}(2n, 2k)}$. That is, $p = π_{\operatorname{SpSt}(2n, 2k)}(p_{\operatorname{Sp}})$.

    To generate a random tangent vector in $T_p\operatorname{SpSt}(2n, 2k)$ this code exploits the second tangent vector space parametrization of SymplecticStiefel, showing that any $X \in T_p\operatorname{SpSt}(2n, 2k)$ can be written as $X = pΩ_X + p^sB_X$. To generate random tangent vectors at $p$ then, this function sets $B_X = 0$ and generates a random Hamiltonian matrix $Ω_X \in \mathfrak{sp}(2n,F)$ with Frobenius norm of hamiltonian_norm before returning $X = pΩ_X$.

    source
    ManifoldDiff.riemannian_gradientMethod
    X = riemannian_gradient(::SymplecticStiefel, f, p, Y; embedding_metric::EuclideanMetric=EuclideanMetric())
    +riemannian_gradient!(::SymplecticStiefel, f, X, p, Y; embedding_metric::EuclideanMetric=EuclideanMetric())

    Compute the riemannian gradient X of f on SymplecticStiefel at a point p, provided that the gradient of the function $\tilde f$, which is f continued into the embedding is given by Y. The metric in the embedding is the Euclidean metric.

    The manifold gradient X is computed from Y as

    \[ X = Yp^{\mathrm{T}}p + Q_{2n}pY^{\mathrm{T}}Q_{2n}p,\]

    where $Q_{2n}$ is the SymplecticMatrix.

    source
    Manifolds.canonical_projectMethod
    canonical_project(::SymplecticStiefel, p_Sp)
    +canonical_project!(::SymplecticStiefel{n,k}, p, p_Sp)

    Define the canonical projection from $\operatorname{Sp}(2n, 2n)$ onto $\operatorname{SpSt}(2n, 2k)$, by projecting onto the first $k$ columns and the $n + 1$'th onto the $n + k$'th columns [BZ21].

    It is assumed that the point $p$ is on $\operatorname{Sp}(2n, 2n)$.

    source
    Manifolds.symplectic_inverse_timesMethod
    symplectic_inverse_times(::SymplecticStiefel, p, q)
    +symplectic_inverse_times!(::SymplecticStiefel, A, p, q)

    Directly compute the symplectic inverse of $p \in \operatorname{SpSt}(2n, 2k)$, multiplied with $q \in \operatorname{SpSt}(2n, 2k)$. That is, this function efficiently computes $p^+q = (Q_{2k}p^{\mathrm{T}}Q_{2n})q \in ℝ^{2k \times 2k}$, where $Q_{2n}, Q_{2k}$ are the SymplecticMatrix of sizes $2n \times 2n$ and $2k \times 2k$ respectively.

    This function performs this common operation without allocating more than a $2k \times 2k$ matrix to store the result in, or in the case of the in-place function, without allocating memory at all.

    source
    ManifoldsBase.check_pointMethod
    check_point(M::SymplecticStiefel, p; kwargs...)

    Check whether p is a valid point on the SymplecticStiefel, $\operatorname{SpSt}(2n, 2k)$ manifold. That is, the point has the right AbstractNumbers type and $p^{+}p$ is (approximately) the identity, where for $A \in \mathbb{R}^{2n \times 2k}$, $A^{+} = Q_{2k}^{\mathrm{T}}A^{\mathrm{T}}Q_{2n}$ is the symplectic inverse, with

    \[Q_{2n} = +\begin{bmatrix} +0_n & I_n \\ + -I_n & 0_n +\end{bmatrix}.\]

    The tolerance can be set with kwargs... (e.g. atol = 1.0e-14).

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::Symplectic, p, X; kwargs...)

    Checks whether X is a valid tangent vector at p on the SymplecticStiefel, $\operatorname{SpSt}(2n, 2k)$ manifold. First recall the definition of the symplectic inverse for $A \in \mathbb{R}^{2n \times 2k}$, $A^{+} = Q_{2k}^{\mathrm{T}}A^{\mathrm{T}}Q_{2n}$ is the symplectic inverse, with

    \[ Q_{2n} = + \begin{bmatrix} + 0_n & I_n \\ + -I_n & 0_n +\end{bmatrix}.\]

    The we check that $H = p^{+}X \in 𝔤_{2k}$, where $𝔤$ is the Lie Algebra of the symplectic group $\operatorname{Sp}(2k)$, characterized as [BZ21],

    \[ 𝔤_{2k} = \{H \in ℝ^{2k \times 2k} \;|\; H^+ = -H \}.\]

    The tolerance can be set with kwargs... (e.g. atol = 1.0e-14).

    source
    ManifoldsBase.innerMethod
    inner(M::SymplecticStiefel{n, k}, p, X. Y)

    Compute the Riemannian inner product $g^{\operatorname{SpSt}}$ at $p \in \operatorname{SpSt}$ between tangent vectors $X, X \in T_p\operatorname{SpSt}$. Given by Proposition 3.10 in [BZ21].

    \[g^{\operatorname{SpSt}}_p(X, Y) + = \operatorname{tr}\left(X^{\mathrm{T}}\left(I_{2n} - + \frac{1}{2}Q_{2n}^{\mathrm{T}}p(p^{\mathrm{T}}p)^{-1}p^{\mathrm{T}}Q_{2n}\right)Y(p^{\mathrm{T}}p)^{-1}\right).\]

    source
    ManifoldsBase.inverse_retractMethod
    inverse_retract(::SymplecticStiefel, p, q, ::CayleyInverseRetraction)
    +inverse_retract!(::SymplecticStiefel, q, p, X, ::CayleyInverseRetraction)

    Compute the Cayley Inverse Retraction $X = \mathcal{L}_p^{\operatorname{SpSt}}(q)$ such that the Cayley Retraction from $p$ along $X$ lands at $q$, i.e. $\mathcal{R}_p(X) = q$ [BZ21].

    First, recall the definition the standard symplectic matrix

    \[Q = +\begin{bmatrix} + 0 & I \\ +-I & 0 +\end{bmatrix}\]

    as well as the symplectic inverse of a matrix $A$, $A^{+} = Q^{\mathrm{T}} A^{\mathrm{T}} Q$.

    For $p, q ∈ \operatorname{SpSt}(2n, 2k, ℝ)$ then, we can define the inverse cayley retraction as long as the following matrices exist.

    \[ U = (I + p^+ q)^{-1} \in ℝ^{2k \times 2k}, + \quad + V = (I + q^+ p)^{-1} \in ℝ^{2k \times 2k}.\]

    If that is the case, the inverse cayley retration at $p$ applied to $q$ is

    \[\mathcal{L}_p^{\operatorname{Sp}}(q) = 2p\bigl(V - U\bigr) + 2\bigl((p + q)U - p\bigr) + ∈ T_p\operatorname{Sp}(2n).\]

    source
    ManifoldsBase.manifold_dimensionMethod
    manifold_dimension(::SymplecticStiefel{n, k})

    Returns the dimension of the symplectic Stiefel manifold embedded in $ℝ^{2n \times 2k}$, i.e. [BZ21]

    \[ \operatorname{dim}(\operatorname{SpSt}(2n, 2k)) = (4n - 2k + 1)k.\]

    source
    ManifoldsBase.projectMethod
    project(::SymplecticStiefel, p, A)
    +project!(::SymplecticStiefel, Y, p, A)

    Given a point $p \in \operatorname{SpSt}(2n, 2k)$, project an element $A \in \mathbb{R}^{2n \times 2k}$ onto the tangent space $T_p\operatorname{SpSt}(2n, 2k)$ relative to the euclidean metric of the embedding $\mathbb{R}^{2n \times 2k}$.

    That is, we find the element $X \in T_p\operatorname{SpSt}(2n, 2k)$ which solves the constrained optimization problem

    \[ \operatorname{min}_{X \in \mathbb{R}^{2n \times 2k}} \frac{1}{2}||X - A||^2, \quad + \text{s.t.}\; + h(X)\colon= X^{\mathrm{T}} Q p + p^{\mathrm{T}} Q X = 0,\]

    where $h : \mathbb{R}^{2n \times 2k} \rightarrow \operatorname{skew}(2k)$ defines the restriction of $X$ onto the tangent space $T_p\operatorname{SpSt}(2n, 2k)$.

    source
    ManifoldsBase.retractMethod
    retract(::SymplecticStiefel, p, X, ::CayleyRetraction)
    +retract!(::SymplecticStiefel, q, p, X, ::CayleyRetraction)

    Compute the Cayley retraction on the Symplectic Stiefel manifold, computed inplace of q from p along X.

    Given a point $p \in \operatorname{SpSt}(2n, 2k)$, every tangent vector $X \in T_p\operatorname{SpSt}(2n, 2k)$ is of the form $X = \tilde{\Omega}p$, with

    \[ \tilde{\Omega} = \left(I_{2n} - \frac{1}{2}pp^+\right)Xp^+ - + pX^+\left(I_{2n} - \frac{1}{2}pp^+\right) \in ℝ^{2n \times 2n},\]

    as shown in Proposition 3.5 of [BZ21]. Using this representation of $X$, the Cayley retraction on $\operatorname{SpSt}(2n, 2k)$ is defined pointwise as

    \[ \mathcal{R}_p(X) = \operatorname{cay}\left(\frac{1}{2}\tilde{\Omega}\right)p.\]

    The operator $\operatorname{cay}(A) = (I - A)^{-1}(I + A)$ is the Cayley transform.

    However, the computation of an $2n \times 2n$ matrix inverse in the expression above can be reduced down to inverting a $2k \times 2k$ matrix due to Proposition 5.2 of [BZ21].

    Let $A = p^+X$ and $H = X - pA$. Then an equivalent expression for the Cayley retraction defined pointwise above is

    \[ \mathcal{R}_p(X) = -p + (H + 2p)(H^+H/4 - A/2 + I_{2k})^{-1}.\]

    It is this expression we compute inplace of q.

    source

    Literature

    [BZ21]
    +
    +
    T. Bendokat and R. Zimmermann. The real symplectic Stiefel and Grassmann manifolds: metrics, geodesics and applications, arXiv Preprint, 2108.12447 (2021).
    +
    +
    diff --git a/v0.8.79/manifolds/torus.html b/v0.8.79/manifolds/torus.html new file mode 100644 index 0000000000..3923fe3275 --- /dev/null +++ b/v0.8.79/manifolds/torus.html @@ -0,0 +1,13 @@ + +Torus · Manifolds.jl

    Torus

    The torus $𝕋^d ≅ [-π,π)^d$ is modeled as an AbstractPowerManifold of the (real-valued) Circle and uses ArrayPowerRepresentation. Points on the torus are hence row vectors, $x ∈ ℝ^{d}$.

    Example

    The following code can be used to make a three-dimensional torus $𝕋^3$ and compute a tangent vector:

    using Manifolds
    +M = Torus(3)
    +p = [0.5, 0.0, 0.0]
    +q = [0.0, 0.5, 1.0]
    +X = log(M, p, q)
    3-element Vector{Float64}:
    + -0.5
    +  0.5
    +  1.0

    Types and functions

    Most functions are directly implemented for an AbstractPowerManifold with ArrayPowerRepresentation except the following special cases:

    ManifoldsBase.check_vectorMethod
    check_vector(M::Torus{n}, p, X; kwargs...)

    Checks whether X is a valid tangent vector to p on the Torus M. This means, that p is valid, that X is of correct dimension and elementwise a tangent vector to the elements of p on the Circle.

    source

    Embedded Torus

    Two-dimensional torus embedded in $ℝ^3$.

    Manifolds.DefaultTorusAtlasType
    DefaultTorusAtlas()

    Atlas for torus with charts indexed by two angles numbers $θ₀, φ₀ ∈ [-π, π)$. Inverse of a chart $(θ₀, φ₀)$ is given by

    \[x(θ, φ) = (R + r\cos(θ + θ₀))\cos(φ + φ₀) \\ +y(θ, φ) = (R + r\cos(θ + θ₀))\sin(φ + φ₀) \\ +z(θ, φ) = r\sin(θ + θ₀)\]

    source
    Manifolds.EmbeddedTorusType
    EmbeddedTorus{TR<:Real} <: AbstractDecoratorManifold{ℝ}

    Surface in ℝ³ described by parametric equations:

    \[x(θ, φ) = (R + r\cos θ)\cos φ \\ +y(θ, φ) = (R + r\cos θ)\sin φ \\ +z(θ, φ) = r\sin θ\]

    for θ, φ in $[-π, π)$. It is assumed that $R > r > 0$.

    Alternative names include anchor ring, donut and doughnut.

    Constructor

    EmbeddedTorus(R, r)
    source
    Manifolds.check_chart_switchMethod
    check_chart_switch(::EmbeddedTorus, A::DefaultTorusAtlas, i, a; ϵ = pi/3)

    Return true if parameters a lie closer than ϵ to chart boundary.

    source
    ManifoldsBase.check_pointMethod
    check_point(M::EmbeddedTorus, p; kwargs...)

    Check whether p is a valid point on the EmbeddedTorus M. The tolerance for the last test can be set using the kwargs....

    The method checks if $(p_1^2 + p_2^2 + p_3^2 + R^2 - r^2)^2$ is apprximately equal to $4R^2(p_1^2 + p_2^2)$.

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::EmbeddedTorus, p, X; atol=eps(eltype(p)), kwargs...)

    Check whether X is a valid vector tangent to p on the EmbeddedTorus M. The method checks if the vector X is orthogonal to the vector normal to the torus, see normal_vector. Absolute tolerance can be set using atol.

    source
    ManifoldsBase.innerMethod
    inner(M::EmbeddedTorus, ::DefaultTorusAtlas, i, a, Xc, Yc)

    Inner product on EmbeddedTorus in chart i in the DefaultTorusAtlas. between vectors with coordinates Xc and Yc tangent at point with parameters a. Vector coordinates must be given in the induced basis.

    source
    diff --git a/v0.8.79/manifolds/tucker.html b/v0.8.79/manifolds/tucker.html new file mode 100644 index 0000000000..3becca6a0a --- /dev/null +++ b/v0.8.79/manifolds/tucker.html @@ -0,0 +1,17 @@ + +Tucker · Manifolds.jl

    Tucker manifold

    Manifolds.TuckerType
    Tucker{N, R, D, 𝔽} <: AbstractManifold{𝔽}

    The manifold of $N_1 \times \dots \times N_D$ real-valued or complex-valued tensors of fixed multilinear rank $(R_1, \dots, R_D)$ . If $R_1 = \dots = R_D = 1$, this is the Segre manifold, i.e., the set of rank-1 tensors.

    Representation in HOSVD format

    Let $\mathbb{F}$ be the real or complex numbers. Any tensor $p$ on the Tucker manifold can be represented as a multilinear product in HOSVD [LMV00] form

    \[p = (U_1,\dots,U_D) \cdot \mathcal{C}\]

    where $\mathcal C \in \mathbb{F}^{R_1 \times \dots \times R_D}$ and, for $d=1,\dots,D$, the matrix $U_d \in \mathbb{F}^{N_d \times R_d}$ contains the singular vectors of the $d$th unfolding of $\mathcal{A}$

    Tangent space

    The tangent space to the Tucker manifold at $p = (U_1,\dots,U_D) \cdot \mathcal{C}$ is [KL10]

    \[T_p \mathcal{M} = +\bigl\{ +(U_1,\dots,U_D) \cdot \mathcal{C}^\prime ++ \sum_{d=1}^D \bigl( + (U_1, \dots, U_{d-1}, U_d^\prime, U_{d+1}, \dots, U_D) + \cdot \mathcal{C} +\bigr) +\bigr\}\]

    where $\mathcal{C}^\prime$ is arbitrary, $U_d^{\mathrm{H}}$ is the Hermitian adjoint of $U_d$, and $U_d^{\mathrm{H}} U_d^\prime = 0$ for all $d$.

    Constructor

    Tucker(N::NTuple{D, Int}, R::NTuple{D, Int}[, field = ℝ])

    Generate the manifold of field-valued tensors of dimensions N[1] × … × N[D] and multilinear rank R = (R[1], …, R[D]).

    source
    Manifolds.TuckerPointType
    TuckerPoint{T,D}

    An order D tensor of fixed multilinear rank and entries of type T, which makes it a point on the Tucker manifold. The tensor is represented in HOSVD form.

    Constructors:

    TuckerPoint(core::AbstractArray{T,D}, factors::Vararg{<:AbstractMatrix{T},D}) where {T,D}

    Construct an order D tensor of element type T that can be represented as the multilinear product (factors[1], …, factors[D]) ⋅ core. It is assumed that the dimensions of the core are the multilinear rank of the tensor and that the matrices factors each have full rank. No further assumptions are made.

    TuckerPoint(p::AbstractArray{T,D}, mlrank::NTuple{D,Int}) where {T,D}

    The low-multilinear rank tensor arising from the sequentially truncated the higher-order singular value decomposition of the D-dimensional array p of type T. The singular values are truncated to get a multilinear rank mlrank [VVM12].

    source
    Manifolds.TuckerTVectorType
    TuckerTVector{T, D} <: TVector

    Tangent vector to the D-th order Tucker manifold at $p = (U_1,\dots,U_D) ⋅ \mathcal{C}$. The numbers are of type T and the vector is represented as

    \[X = +(U_1,\dots,U_D) \cdot \mathcal{C}^\prime + +\sum_{d=1}^D (U_1,\dots,U_{d-1},U_d^\prime,U_{d+1},\dots,U_D) \cdot \mathcal{C}\]

    where $U_d^\mathrm{H} U_d^\prime = 0$.

    Constructor

    TuckerTVector(C′::Array{T,D}, U′::NTuple{D,Matrix{T}}) where {T,D}

    Constructs a Dth order TuckerTVector of number type T with $C^\prime$ and $U^\prime$, so that, together with a TuckerPoint $p$ as above, the tangent vector can be represented as $X$ in the above expression.

    source
    Base.convertMethod
    Base.convert(::Type{Matrix{T}}, basis::CachedBasis{𝔽,DefaultOrthonormalBasis{𝔽, TangentSpaceType},HOSVDBasis{T, D}}) where {𝔽, T, D}
    +Base.convert(::Type{Matrix}, basis::CachedBasis{𝔽,DefaultOrthonormalBasis{𝔽, TangentSpaceType},HOSVDBasis{T, D}}) where {𝔽, T, D}

    Convert a HOSVD-derived cached basis from [DBV21] of the Dth order Tucker manifold with number type T to a matrix. The columns of this matrix are the vectorisations of the embeddings of the basis vectors.

    source
    Base.foreachFunction
    Base.foreach(f, M::Tucker, p::TuckerPoint, basis::AbstractBasis, indices=1:manifold_dimension(M))

    Let basis be and AbstractBasis at a point p on M. Suppose f is a function that takes an index and a vector as an argument. This function applies f to i and the ith basis vector sequentially for each i in indices. Using a CachedBasis may speed up the computation.

    NOTE: The i'th basis vector is overwritten in each iteration. If any information about the vector is to be stored, f must make a copy.

    source
    Base.ndimsMethod
    Base.ndims(p::TuckerPoint{T,D}) where {T,D}

    The order of the tensor corresponding to the TuckerPoint p, i.e., D.

    source
    ManifoldsBase.check_pointMethod
    check_point(M::Tucker{N,R,D}, p; kwargs...) where {N,R,D}

    Check whether the multidimensional array or TuckerPoint p is a point on the Tucker manifold, i.e. it is a Dth order N[1] × … × N[D] tensor of multilinear rank (R[1], …, R[D]). The keyword arguments are passed to the matrix rank function applied to the unfoldings. For a TuckerPoint it is checked that the point is in correct HOSVD form.

    source
    ManifoldsBase.check_vectorMethod
    check_vector(M::Tucker{N,R,D}, p::TuckerPoint{T,D}, X::TuckerTVector) where {N,R,T,D}

    Check whether a TuckerTVector X is is in the tangent space to the Dth order Tucker manifold M at the Dth order TuckerPoint p. This is the case when the dimensions of the factors in X agree with those of p and the factor matrices of X are in the orthogonal complement of the HOSVD factors of p.

    source
    ManifoldsBase.embedMethod
    embed(::Tucker{N,R,D}, p::TuckerPoint) where {N,R,D}

    Convert a TuckerPoint p on the rank R Tucker manifold to a full N[1] × … × N[D]-array by evaluating the Tucker decomposition.

    embed(::Tucker{N,R,D}, p::TuckerPoint, X::TuckerTVector) where {N,R,D}

    Convert a tangent vector X with base point p on the rank R Tucker manifold to a full tensor, represented as an N[1] × … × N[D]-array.

    source
    ManifoldsBase.get_basisMethod
    get_basis(:: Tucker, p::TuckerPoint, basisType::DefaultOrthonormalBasis{𝔽, TangentSpaceType}) where 𝔽

    An implicitly stored basis of the tangent space to the Tucker manifold. Assume $p = (U_1,\dots,U_D) \cdot \mathcal{C}$ is in HOSVD format and that, for $d=1,\dots,D$, the singular values of the $d$'th unfolding are $\sigma_{dj}$, with $j = 1,\dots,R_d$. The basis of the tangent space is as follows: [DBV21]

    \[\bigl\{ +(U_1,\dots,U_D) e_i +\bigr\} \cup \bigl\{ +(U_1,\dots, \sigma_{dj}^{-1} U_d^{\perp} e_i e_j^T,\dots,U_D) \cdot \mathcal{C} +\bigr\}\]

    for all $d = 1,\dots,D$ and all canonical basis vectors $e_i$ and $e_j$. Every $U_d^\perp$ is such that $[U_d \quad U_d^{\perp}]$ forms an orthonormal basis of $\mathbb{R}^{N_d}$.

    source
    ManifoldsBase.innerMethod
    inner(M::Tucker, p::TuckerPoint, X::TuckerTVector, Y::TuckerTVector)

    The Euclidean inner product between tangent vectors X and X at the point p on the Tucker manifold. This is equal to embed(M, p, X) ⋅ embed(M, p, Y).

    inner(::Tucker, A::TuckerPoint, X::TuckerTVector, Y)
    +inner(::Tucker, A::TuckerPoint, X, Y::TuckerTVector)

    The Euclidean inner product between X and Y where X is a vector tangent to the Tucker manifold at p and Y is a vector in the ambient space or vice versa. The vector in the ambient space is represented as a full tensor, i.e., a multidimensional array.

    source
    ManifoldsBase.inverse_retractMethod
    inverse_retract(M::Tucker, p::TuckerPoint, q::TuckerPoint, ::ProjectionInverseRetraction)

    The projection inverse retraction on the Tucker manifold interprets q as a point in the ambient Euclidean space (see embed) and projects it onto the tangent space at to M at p.

    source
    ManifoldsBase.manifold_dimensionMethod
    manifold_dimension(::Tucker{N,R,D}) where {N,R,D}

    The dimension of the manifold of $N_1 \times \dots \times N_D$ tensors of multilinear rank $(R_1, \dots, R_D)$, i.e.

    \[\mathrm{dim}(\mathcal{M}) = \prod_{d=1}^D R_d + \sum_{d=1}^D R_d (N_d - R_d).\]

    source
    ManifoldsBase.projectMethod
    project(M::Tucker, p::TuckerPoint, X)

    The least-squares projection of a dense tensor X onto the tangent space to M at p.

    source
    ManifoldsBase.retractMethod
    retract(::Tucker, p::TuckerPoint, X::TuckerTVector, ::PolarRetraction)

    The truncated HOSVD-based retraction [KSV13] to the Tucker manifold, i.e. the result is the sequentially tuncated HOSVD approximation of $p + X$.

    In the exceptional case that the multilinear rank of $p + X$ is lower than that of $p$, this retraction produces a boundary point, which is outside the manifold.

    source

    Literature

    diff --git a/v0.8.79/manifolds/vector_bundle.html b/v0.8.79/manifolds/vector_bundle.html new file mode 100644 index 0000000000..2893512c22 --- /dev/null +++ b/v0.8.79/manifolds/vector_bundle.html @@ -0,0 +1,34 @@ + +Vector bundle · Manifolds.jl

    Vector bundles

    Vector bundle $E$ is a manifold that is built on top of another manifold $\mathcal M$ (base space). It is characterized by a continuous function $Π : E → \mathcal M$, such that for each point $p ∈ \mathcal M$ the preimage of $p$ by $Π$, $Π^{-1}(\{p\})$, has a structure of a vector space. These vector spaces are called fibers. Bundle projection can be performed using function bundle_projection.

    Tangent bundle is a simple example of a vector bundle, where each fiber is the tangent space at the specified point $x$. An object representing a tangent bundle can be obtained using the constructor called TangentBundle.

    Fibers of a vector bundle are represented by the type VectorBundleFibers. The important difference between functions operating on VectorBundle and VectorBundleFibers is that in the first case both a point on the underlying manifold and the vector are represented together (by a single argument) while in the second case only the vector part is present, while the point is supplied in a different argument where needed.

    VectorBundleFibers refers to the whole set of fibers of a vector bundle. There is also another type, VectorSpaceAtPoint, that represents a specific fiber at a given point. This distinction is made to reduce the need to repeatedly construct objects of type VectorSpaceAtPoint in certain usage scenarios. This is also considered a manifold.

    FVector

    For cases where confusion between different types of vectors is possible, the type FVector can be used to express which type of vector space the vector belongs to. It is used for example in musical isomorphisms (the flat and sharp functions) that are used to go from a tangent space to cotangent space and vice versa.

    Documentation

    Manifolds.SasakiRetractionType
    struct SasakiRetraction <: AbstractRetractionMethod end

    Exponential map on TangentBundle computed via Euler integration as described in [MF12]. The system of equations for $\gamma : ℝ \to T\mathcal M$ such that $\gamma(1) = \exp_{p,X}(X_M, X_F)$ and $\gamma(0)=(p, X)$ reads

    \[\dot{\gamma}(t) = (\dot{p}(t), \dot{X}(t)) = (R(X(t), \dot{X}(t))\dot{p}(t), 0)\]

    where $R$ is the Riemann curvature tensor (see riemann_tensor).

    Constructor

    SasakiRetraction(L::Int)

    In this constructor L is the number of integration steps.

    source
    Manifolds.TangentBundleType
    TangentBundle{𝔽,M} = VectorBundle{𝔽,TangentSpaceType,M} where {𝔽,M<:AbstractManifold{𝔽}}

    Tangent bundle for manifold of type M, as a manifold with the Sasaki metric [Sas58].

    Exact retraction and inverse retraction can be approximated using VectorBundleProductRetraction, VectorBundleInverseProductRetraction and SasakiRetraction. VectorBundleProductVectorTransport can be used as a vector transport.

    Constructors

    TangentBundle(M::AbstractManifold)
    +TangentBundle(M::AbstractManifold, vtm::VectorBundleProductVectorTransport)
    source
    Manifolds.TensorProductTypeType
    TensorProductType(spaces::VectorSpaceType...)

    Vector space type corresponding to the tensor product of given vector space types.

    source
    Manifolds.VectorBundleFibersType
    VectorBundleFibers(fiber::VectorSpaceType, M::AbstractManifold)

    Type representing a family of vector spaces (fibers) of a vector bundle over M with vector spaces of type fiber. In contrast with VectorBundle, operations on VectorBundleFibers expect point-like and vector-like parts to be passed separately instead of being bundled together. It can be thought of as a representation of vector spaces from a vector bundle but without storing the point at which a vector space is attached (which is specified separately in various functions).

    source
    Manifolds.VectorBundleInverseProductRetractionType
    struct VectorBundleInverseProductRetraction <: AbstractInverseRetractionMethod end

    Inverse retraction of the point y at point p from vector bundle B over manifold B.fiber (denoted $\mathcal M$). The inverse retraction is derived as a product manifold-style approximation to the logarithmic map in the Sasaki metric. The considered product manifold is the product between the manifold $\mathcal M$ and the topological vector space isometric to the fiber.

    Notation:

    • The point $p = (x_p, V_p)$ where $x_p ∈ \mathcal M$ and $V_p$ belongs to the fiber $F=π^{-1}(\{x_p\})$ of the vector bundle $B$ where $π$ is the canonical projection of that vector bundle $B$. Similarly, $q = (x_q, V_q)$.

    The inverse retraction is calculated as

    \[\operatorname{retr}^{-1}_p q = (\operatorname{retr}^{-1}_{x_p}(x_q), V_{\operatorname{retr}^{-1}} - V_p)\]

    where $V_{\operatorname{retr}^{-1}}$ is the result of vector transport of $V_q$ to the point $x_p$. The difference $V_{\operatorname{retr}^{-1}} - V_p$ corresponds to the logarithmic map in the vector space $F$.

    See also VectorBundleProductRetraction.

    source
    Manifolds.VectorBundleProductRetractionType
    struct VectorBundleProductRetraction <: AbstractRetractionMethod end

    Product retraction map of tangent vector $X$ at point $p$ from vector bundle B over manifold B.fiber (denoted $\mathcal M$). The retraction is derived as a product manifold-style approximation to the exponential map in the Sasaki metric. The considered product manifold is the product between the manifold $\mathcal M$ and the topological vector space isometric to the fiber.

    Notation:

    • The point $p = (x_p, V_p)$ where $x_p ∈ \mathcal M$ and $V_p$ belongs to the fiber $F=π^{-1}(\{x_p\})$ of the vector bundle $B$ where $π$ is the canonical projection of that vector bundle $B$.
    • The tangent vector $X = (V_{X,M}, V_{X,F}) ∈ T_pB$ where $V_{X,M}$ is a tangent vector from the tangent space $T_{x_p}\mathcal M$ and $V_{X,F}$ is a tangent vector from the tangent space $T_{V_p}F$ (isomorphic to $F$).

    The retraction is calculated as

    \[\operatorname{retr}_p(X) = (\exp_{x_p}(V_{X,M}), V_{\exp})\]

    where $V_{\exp}$ is the result of vector transport of $V_p + V_{X,F}$ to the point $\exp_{x_p}(V_{X,M})$. The sum $V_p + V_{X,F}$ corresponds to the exponential map in the vector space $F$.

    See also VectorBundleInverseProductRetraction.

    source
    Manifolds.VectorBundleProductVectorTransportType
    VectorBundleProductVectorTransport{
    +    TMP<:AbstractVectorTransportMethod,
    +    TMV<:AbstractVectorTransportMethod,
    +} <: AbstractVectorTransportMethod

    Vector transport type on VectorBundle. method_point is used for vector transport of the point part and method_vector is used for transport of the vector part.

    The vector transport is derived as a product manifold-style vector transport. The considered product manifold is the product between the manifold $\mathcal M$ and the topological vector space isometric to the fiber.

    Constructor

    VectorBundleProductVectorTransport(
    +    method_point::AbstractVectorTransportMethod,
    +    method_vector::AbstractVectorTransportMethod,
    +)
    +VectorBundleProductVectorTransport()

    By default both methods are set to ParallelTransport.

    source
    Manifolds.VectorSpaceAtPointType
    VectorSpaceAtPoint{
    +    𝔽,
    +    TFiber<:VectorBundleFibers{<:VectorSpaceType,<:AbstractManifold{𝔽}},
    +    TX,
    +} <: AbstractManifold{𝔽}

    A vector space at a point p on the manifold. This is modelled using VectorBundleFibers with only a vector-like part and fixing the point-like part to be just p.

    This vector space itself is also a manifold. Especially, it's flat and hence isometric to the Euclidean manifold.

    Constructor

    VectorSpaceAtPoint(fiber::VectorBundleFibers, p)

    A vector space (fiber type fiber of a vector bundle) at point p from the manifold fiber.manifold.

    source
    Base.expMethod
    exp(M::TangentSpaceAtPoint, p, X)

    Exponential map of tangent vectors X and p from the tangent space M. It is calculated as their sum.

    source
    Base.getindexMethod
    getindex(p::ArrayPartition, M::VectorBundle, s::Symbol)
    +p[M::VectorBundle, s]

    Access the element(s) at index s of a point p on a VectorBundle M by using the symbols :point and :vector for the base and vector component, respectively.

    source
    Base.getindexMethod
    getindex(p::ProductRepr, M::VectorBundle, s::Symbol)
    +p[M::VectorBundle, s]

    Access the element(s) at index s of a point p on a VectorBundle M by using the symbols :point and :vector for the base and vector component, respectively.

    source
    Base.logMethod
    log(M::TangentSpaceAtPoint, p, q)

    Logarithmic map on the tangent space manifold M, calculated as the difference of tangent vectors q and p from M.

    source
    Base.setindex!Method
    setindex!(p::ArrayPartition, val, M::VectorBundle, s::Symbol)
    +p[M::VectorBundle, s] = val

    Set the element(s) at index s of a point p on a VectorBundle M to val by using the symbols :point and :vector for the base and vector component, respectively.

    Note

    The content of element of p is replaced, not the element itself.

    source
    Base.setindex!Method
    setindex!(p::ProductRepr, val, M::VectorBundle, s::Symbol)
    +p[M::VectorBundle, s] = val

    Set the element(s) at index s of a point p on a VectorBundle M to val by using the symbols :point and :vector for the base and vector component, respectively.

    Note

    The content of element of p is replaced, not the element itself.

    source
    LinearAlgebra.normMethod
    norm(B::VectorBundleFibers, p, q)

    Norm of the vector X from the vector space of type B.fiber at point p from manifold B.manifold.

    source
    Manifolds.bundle_projectionMethod
    bundle_projection(B::VectorBundle, p::ArrayPartition)

    Projection of point p from the bundle M to the base manifold. Returns the point on the base manifold B.manifold at which the vector part of p is attached.

    source
    Manifolds.vector_bundle_transportMethod
    vector_bundle_transport(fiber::VectorSpaceType, M::AbstractManifold)

    Determine the vector tranport used for exp and log maps on a vector bundle with vector space type fiber and manifold M.

    source
    ManifoldsBase.WeingartenMethod
    Y = Weingarten(M::VectorSpaceAtPoint, p, X, V)
    +Weingarten!(M::VectorSpaceAtPoint, Y, p, X, V)

    Compute the Weingarten map $\mathcal W_p$ at p on the VectorSpaceAtPoint M with respect to the tangent vector $X \in T_p\mathcal M$ and the normal vector $V \in N_p\mathcal M$.

    Since this a flat space by itself, the result is always the zero tangent vector.

    source
    ManifoldsBase.allocate_resultMethod
    allocate_result(B::VectorBundleFibers, f, x...)

    Allocates an array for the result of function f that is an element of the vector space of type B.fiber on manifold B.manifold and arguments x... for implementing the non-modifying operation using the modifying operation.

    source
    ManifoldsBase.allocate_result_typeMethod
    allocate_result_type(B::VectorBundleFibers, f, args::NTuple{N,Any}) where N

    Return type of element of the array that will represent the result of function f for representing an operation with result in the vector space fiber for manifold M on given arguments (passed at a tuple).

    source
    ManifoldsBase.distanceMethod
    distance(M::TangentSpaceAtPoint, p, q)

    Distance between vectors p and q from the vector space M. It is calculated as the norm of their difference.

    source
    ManifoldsBase.distanceMethod
    distance(B::VectorBundleFibers, p, X, Y)

    Distance between vectors X and Y from the vector space at point p from the manifold B.manifold, that is the base manifold of M.

    source
    ManifoldsBase.innerMethod
    inner(M::TangentSpaceAtPoint, p, X, Y)

    Inner product of vectors X and Y from the tangent space at M.

    source
    ManifoldsBase.innerMethod
    inner(B::VectorBundle, p, X, Y)

    Inner product of tangent vectors X and Y at point p from the vector bundle B over manifold B.fiber (denoted $\mathcal M$).

    Notation:

    • The point $p = (x_p, V_p)$ where $x_p ∈ \mathcal M$ and $V_p$ belongs to the fiber $F=π^{-1}(\{x_p\})$ of the vector bundle $B$ where $π$ is the canonical projection of that vector bundle $B$.
    • The tangent vector $v = (V_{X,M}, V_{X,F}) ∈ T_{x}B$ where $V_{X,M}$ is a tangent vector from the tangent space $T_{x_p}\mathcal M$ and $V_{X,F}$ is a tangent vector from the tangent space $T_{V_p}F$ (isomorphic to $F$). Similarly for the other tangent vector $w = (V_{Y,M}, V_{Y,F}) ∈ T_{x}B$.

    The inner product is calculated as

    \[⟨X, Y⟩_p = ⟨V_{X,M}, V_{Y,M}⟩_{x_p} + ⟨V_{X,F}, V_{Y,F}⟩_{V_p}.\]

    source
    ManifoldsBase.innerMethod
    inner(B::VectorBundleFibers, p, X, Y)

    Inner product of vectors X and Y from the vector space of type B.fiber at point p from manifold B.manifold.

    source
    ManifoldsBase.projectMethod
    project(M::TangentSpaceAtPoint, p, X)

    Project the vector X from the tangent space M, that is project the vector X tangent at M.point.

    source
    ManifoldsBase.projectMethod
    project(M::TangentSpaceAtPoint, p)

    Project the point p from the tangent space M, that is project the vector p tangent at M.point.

    source
    ManifoldsBase.projectMethod
    project(B::VectorBundle, p, X)

    Project the element X of the ambient space of the tangent space $T_p B$ to the tangent space $T_p B$.

    Notation:

    • The point $p = (x_p, V_p)$ where $x_p ∈ \mathcal M$ and $V_p$ belongs to the fiber $F=π^{-1}(\{x_p\})$ of the vector bundle $B$ where $π$ is the canonical projection of that vector bundle $B$.
    • The vector $x = (V_{X,M}, V_{X,F})$ where $x_p$ belongs to the ambient space of $T_{x_p}\mathcal M$ and $V_{X,F}$ belongs to the ambient space of the fiber $F=π^{-1}(\{x_p\})$ of the vector bundle $B$ where $π$ is the canonical projection of that vector bundle $B$.

    The projection is calculated by projecting $V_{X,M}$ to tangent space $T_{x_p}\mathcal M$ and then projecting the vector $V_{X,F}$ to the fiber $F$.

    source
    ManifoldsBase.projectMethod
    project(B::VectorBundle, p)

    Project the point p from the ambient space of the vector bundle B over manifold B.fiber (denoted $\mathcal M$) to the vector bundle.

    Notation:

    • The point $p = (x_p, V_p)$ where $x_p$ belongs to the ambient space of $\mathcal M$ and $V_p$ belongs to the ambient space of the fiber $F=π^{-1}(\{x_p\})$ of the vector bundle $B$ where $π$ is the canonical projection of that vector bundle $B$.

    The projection is calculated by projecting the point $x_p$ to the manifold $\mathcal M$ and then projecting the vector $V_p$ to the tangent space $T_{x_p}\mathcal M$.

    source
    ManifoldsBase.projectMethod
    project(B::VectorBundleFibers, p, X)

    Project vector X from the vector space of type B.fiber at point p.

    source
    ManifoldsBase.zero_vector!Method
    zero_vector!(B::VectorBundleFibers, X, p)

    Save the zero vector from the vector space of type B.fiber at point p from manifold B.manifold to X.

    source
    ManifoldsBase.zero_vectorMethod
    zero_vector(M::TangentSpaceAtPoint, p)

    Zero tangent vector at point p from the tangent space M, that is the zero tangent vector at point M.point.

    source
    ManifoldsBase.zero_vectorMethod
    zero_vector(B::VectorBundle, p)

    Zero tangent vector at point p from the vector bundle B over manifold B.fiber (denoted $\mathcal M$). The zero vector belongs to the space $T_{p}B$

    Notation:

    • The point $p = (x_p, V_p)$ where $x_p ∈ \mathcal M$ and $V_p$ belongs to the fiber $F=π^{-1}(\{x_p\})$ of the vector bundle $B$ where $π$ is the canonical projection of that vector bundle $B$.

    The zero vector is calculated as

    \[\mathbf{0}_{p} = (\mathbf{0}_{x_p}, \mathbf{0}_F)\]

    where $\mathbf{0}_{x_p}$ is the zero tangent vector from $T_{x_p}\mathcal M$ and $\mathbf{0}_F$ is the zero element of the vector space $F$.

    source
    ManifoldsBase.zero_vectorMethod
    zero_vector(B::VectorBundleFibers, p)

    Compute the zero vector from the vector space of type B.fiber at point p from manifold B.manifold.

    source

    Example

    The following code defines a point on the tangent bundle of the sphere $S^2$ and a tangent vector to that point.

    using Manifolds
    +M = Sphere(2)
    +TB = TangentBundle(M)
    +p = ProductRepr([1.0, 0.0, 0.0], [0.0, 1.0, 3.0])
    +X = ProductRepr([0.0, 1.0, 0.0], [0.0, 0.0, -2.0])
    ProductRepr with 2 submanifold components:
    + Component 1 =
    +  3-element Vector{Float64}:
    +   0.0
    +   1.0
    +   0.0
    + Component 2 =
    +  3-element Vector{Float64}:
    +    0.0
    +    0.0
    +   -2.0

    An approximation of the exponential in the Sasaki metric using 1000 steps can be calculated as follows.

    q = retract(TB, p, X, SasakiRetraction(1000))
    +println("Approximation of the exponential map: ", q)
    Approximation of the exponential map: ProductRepr{Tuple{Vector{Float64}, Vector{Float64}}}(([0.6759570857309888, 0.35241486404386485, 0.6472138609849252], [-1.0318269583261073, 0.6273324630574116, 0.7360618920075961]))
    diff --git a/v0.8.79/misc/about.html b/v0.8.79/misc/about.html new file mode 100644 index 0000000000..357a1df271 --- /dev/null +++ b/v0.8.79/misc/about.html @@ -0,0 +1,2 @@ + +About · Manifolds.jl
    diff --git a/v0.8.79/misc/contributing.html b/v0.8.79/misc/contributing.html new file mode 100644 index 0000000000..ef7cfd0d74 --- /dev/null +++ b/v0.8.79/misc/contributing.html @@ -0,0 +1,9 @@ + +Contributing · Manifolds.jl

    Contributing to Manifolds.jl

    First, thanks for taking the time to contribute. Any contribution is appreciated and welcome.

    The following is a set of guidelines to Manifolds.jl.

    Table of Contents

    I just have a question

    The developers can most easily be reached in the Julia Slack channel #manifolds. You can apply for the Julia Slack workspace here if you haven't joined yet. You can also ask your question on discourse.julialang.org.

    How can I file an issue?

    If you found a bug or want to propose a feature, we track our issues within the GitHub repository.

    How can I contribute?

    Add a missing method

    Not all methods from our interface ManifoldsBase.jl have been implemented for every manifold. If you notice a method missing and can contribute an implementation, please do so! Even providing a single new method is a good contribution.

    Provide a new manifold

    A main contribution you can provide is another manifold that is not yet included in the package. A manifold is a concrete type of AbstractManifold from ManifoldsBase.jl. This package also provides the main set of functions a manifold can/should implement. Don't worry if you can only implement some of the functions. If the application you have in mind only requires a subset of these functions, implement those. The ManifoldsBase.jl interface provides concrete error messages for the remaining unimplemented functions.

    One important detail is that the interface usually provides an in-place as well as a non-mutating variant See for example exp! and exp. The non-mutating one (e.g. exp) always falls back to use the in-place one, so in most cases it should suffice to implement the in-place one (e.g. exp!).

    Note that since the first argument is always the AbstractManifold, the mutated argument is always the second one in the signature. In the example we have exp(M, p, X, t) for the exponential map and exp!(M, q, p, X, t) for the in-place one, which stores the result in q.

    On the other hand, the user will most likely look for the documentation of the non-mutating version, so we recommend adding the docstring for the non-mutating one, where all different signatures should be collected in one string when reasonable. This can best be achieved by adding a docstring to the method with a general signature with the first argument being your manifold:

    struct MyManifold <: AbstractManifold end
    +
    +@doc raw"""
    +    exp(M::MyManifold, p, X)
    +
    +Describe the function.
    +"""
    +exp(::MyManifold, ::Any...)

    Code style

    We try to follow the documentation guidelines from the Julia documentation as well as Blue Style. We run JuliaFormatter.jl on the repo in the way set in the .JuliaFormatter.toml file, which enforces a number of conventions consistent with the Blue Style.

    We also follow a few internal conventions:

    • It is preferred that the AbstractManifold's struct contain a reference to the general theory.
    • Any implemented function should be accompanied by its mathematical formulae if a closed form exists.
    • Within the source code of one manifold, the type of the manifold should be the first element of the file, and an alphabetical order of the functions is preferable.
    • The above implies that the in-place variant of a function follows the non-mutating variant.
    • There should be no dangling = signs.
    • Always add a newline between things of different types (struct/method/const).
    • Always add a newline between methods for different functions (including in-place/nonmutating variants).
    • Prefer to have no newline between methods for the same function; when reasonable, merge the docstrings.
    • All import/using/include should be in the main module file.
    diff --git a/v0.8.79/misc/internals.html b/v0.8.79/misc/internals.html new file mode 100644 index 0000000000..9c1a112b43 --- /dev/null +++ b/v0.8.79/misc/internals.html @@ -0,0 +1,8 @@ + +Internals · Manifolds.jl

    Internal documentation

    This page documents the internal types and methods of Manifolds.jl's that might be of use for writing your own manifold.

    Functions

    Manifolds.eigen_safeFunction
    eigen_safe(x)

    Compute the eigendecomposition of x. If x is a StaticMatrix, it is converted to a Matrix before the decomposition.

    source
    Manifolds.isnormalFunction
    isnormal(x; kwargs...) -> Bool

    Check if the matrix or number x is normal, that is, if it commutes with its adjoint:

    \[x x^\mathrm{H} = x^\mathrm{H} x.\]

    By default, this is an equality check. Provide kwargs for isapprox to perform an approximate check.

    source
    Manifolds.log_safeFunction
    log_safe(x)

    Compute the matrix logarithm of x. If x is a StaticMatrix, it is converted to a Matrix before computing the log.

    source
    Manifolds.log_safe!Function
    log_safe!(y, x)

    Compute the matrix logarithm of x. If the eltype of y is real, then the imaginary part of x is ignored, and a DomainError is raised if real(x) has no real logarithm.

    source
    Manifolds.mul!_safeFunction
    mul!_safe(Y, A, B) -> Y

    Call mul! safely, that is, A and/or B are permitted to alias with Y.

    source
    Manifolds.nzsignFunction
    nzsign(z[, absz])

    Compute a modified sign(z) that is always nonzero, i.e. where

    \[\operatorname(nzsign)(z) = \begin{cases} + 1 & \text{if } z = 0\\ + \frac{z}{|z|} & \text{otherwise} +\end{cases}\]

    source
    Manifolds.realifyFunction
    realify(X::AbstractMatrix{T𝔽}, 𝔽::AbstractNumbers) -> Y::AbstractMatrix{<:Real}

    Given a matrix $X ∈ 𝔽^{n × n}$, compute $Y ∈ ℝ^{m × m}$, where $m = n \operatorname{dim}_𝔽$, and $\operatorname{dim}_𝔽$ is the real_dimension of the number field $𝔽$, using the map $ϕ \colon X ↦ Y$, that preserves the matrix product, so that for all $C,D ∈ 𝔽^{n × n}$,

    \[ϕ(C) ϕ(D) = ϕ(CD).\]

    See realify! for an in-place version, and unrealify! to compute the inverse of $ϕ$.

    source
    Manifolds.realify!Function
    realify!(Y::AbstractMatrix{<:Real}, X::AbstractMatrix{T𝔽}, 𝔽::AbstractNumbers)

    In-place version of realify.

    source
    realify!(Y::AbstractMatrix{<:Real}, X::AbstractMatrix{<:Complex}, ::typeof(ℂ))

    Given a complex matrix $X = A + iB ∈ ℂ^{n × n}$, compute its realified matrix $Y ∈ ℝ^{2n × 2n}$, written where

    \[Y = \begin{pmatrix}A & -B \\ B & A \end{pmatrix}.\]

    source
    Manifolds.select_from_tupleFunction
    select_from_tuple(t::NTuple{N, Any}, positions::Val{P})

    Selects elements of tuple t at positions specified by the second argument. For example select_from_tuple(("a", "b", "c"), Val((3, 1, 1))) returns ("c", "a", "a").

    source
    Manifolds.unrealify!Function
    unrealify!(X::AbstractMatrix{T𝔽}, Y::AbstractMatrix{<:Real}, 𝔽::AbstractNumbers[, n])

    Given a real matrix $Y ∈ ℝ^{m × m}$, where $m = n \operatorname{dim}_𝔽$, and $\operatorname{dim}_𝔽$ is the real_dimension of the number field $𝔽$, compute in-place its equivalent matrix $X ∈ 𝔽^{n × n}$. Note that this function does not check that $Y$ has a valid structure to be un-realified.

    See realify! for the inverse of this function.

    source
    Manifolds.usincFunction
    usinc(θ::Real)

    Unnormalized version of sinc function, i.e. $\operatorname{usinc}(θ) = \frac{\sin(θ)}{θ}$. This is equivalent to sinc(θ/π).

    source
    Manifolds.usinc_from_cosFunction
    usinc_from_cos(x::Real)

    Unnormalized version of sinc function, i.e. $\operatorname{usinc}(θ) = \frac{\sin(θ)}{θ}$, computed from $x = cos(θ)$.

    source
    Manifolds.vec2skew!Function
    vec2skew!(X, v, k)

    create a skew symmetric matrix inplace in X of size $k\times k$ from a vector v, for example for v=[1,2,3] and k=3 this yields

    [  0  1  2;
    +  -1  0  3;
    +  -2 -3  0
    +]
    source
    Manifolds.ziptuplesFunction
    ziptuples(a, b[, c[, d[, e]]])

    Zips tuples a, b, and remaining in a fast, type-stable way. If they have different lengths, the result is trimmed to the length of the shorter tuple.

    source

    Types in Extensions

    diff --git a/v0.8.79/misc/notation.html b/v0.8.79/misc/notation.html new file mode 100644 index 0000000000..ded8beaa5f --- /dev/null +++ b/v0.8.79/misc/notation.html @@ -0,0 +1,2 @@ + +Notation · Manifolds.jl

    Notation overview

    Since manifolds include a reasonable amount of elements and functions, the following list tries to keep an overview of used notation throughout Manifolds.jl. The order is alphabetical by name. They might be used in a plain form within the code or when referring to that code. This is for example the case with the calligraphic symbols.

    Within the documented functions, the utf8 symbols are used whenever possible, as long as that renders correctly in $\TeX$ within this documentation.

    SymbolDescriptionAlso usedComment
    $\tau_p$action map by group element $p$$\mathrm{L}_p$, $\mathrm{R}_p$either left or right
    $\operatorname{Ad}_p(X)$adjoint action of element $p$ of a Lie group on the element $X$ of the corresponding Lie algebra
    $\times$Cartesian product of two manifoldssee ProductManifold
    $^{\wedge}$(n-ary) Cartesian power of a manifoldsee PowerManifold
    $\cdot^\mathrm{H}$conjugate/Hermitian transpose
    $a$coordinates of a point in a chartsee get_parameters
    $\frac{\mathrm{D}}{\mathrm{d}t}$covariant derivative of a vector field $X(t)$
    $T^*_p \mathcal M$the cotangent space at $p$
    $ξ$a cotangent vector from $T^*_p \mathcal M$$ξ_1, ξ_2,… ,η,\zeta$sometimes written with base point $ξ_p$.
    $\mathrm{d}\phi_p(q)$Differential of a map $\phi: \mathcal M \to \mathcal N$ with respect to $p$ at a point $q$. For functions of multiple variables, for example $\phi(p, p_1)$ where $p \in \mathcal M$ and $p_1 \in \mathcal M_1$, variable $p$ is explicitly stated to specify with respect to which argument the differential is calculated.$\mathrm{d}\phi_q$, $(\mathrm{d}\phi)_q$, $(\phi_*)_q$, $D_p\phi(q)$pushes tangent vectors $X \in T_q \mathcal M$ forward to $\mathrm{d}\phi_p(q)[X] \in T_{\phi(q)} \mathcal N$
    $n$dimension (of a manifold)$n_1,n_2,\ldots,m, \dim(\mathcal M)$for the real dimension sometimes also $\dim_{\mathbb R}(\mathcal M)$
    $d(\cdot,\cdot)$(Riemannian) distance$d_{\mathcal M}(\cdot,\cdot)$
    $\exp_p X$exponential map at $p \in \mathcal M$ of a vector $X \in T_p \mathcal M$$\exp_p(X)$
    $F$a fibersee VectorBundleFibers
    $\mathbb F$a field, usually $\mathbb F \in \{\mathbb R,\mathbb C, \mathbb H\}$, i.e. the real, complex, and quaternion numbers, respectively.field a manifold or a basis is based on
    $\gamma$a geodesic$\gamma_{p;q}$, $\gamma_{p,X}$connecting two points $p,q$ or starting in $p$ with velocity $X$.
    $\operatorname{grad} f(p)$(Riemannian) gradient of function $f \colon \mathcal{M} \to \mathbb{R}$ at $p \in \mathcal{M}$
    $\nabla f(p)$(Euclidean) gradient of function $f \colon \mathcal{M} \to \mathbb{R}$ at $p \in \mathcal{M}$ but thought of as evaluated in the embeddingG
    $\circ$a group operation
    $\cdot^\mathrm{H}$Hermitian or conjugate transposed for both complex or quaternion matrices
    $\operatorname{Hess} f(p)$(Riemannian) Hessian of function $f \colon T_p\mathcal{M} \to T_p\mathcal M$ (i.e. the 1-1-tensor form) at $p \in \mathcal{M}$
    $\nabla^2 f(p)$(Euclidean) Hessian of function $f$ in the embeddingH
    $e$identity element of a group
    $I_k$identity matrix of size $k\times k$
    $k$indices$i,j$
    $\langle\cdot,\cdot\rangle$inner product (in $T_p \mathcal M$)$\langle\cdot,\cdot\rangle_p, g_p(\cdot,\cdot)$
    $\operatorname{retr}^{-1}_pq$an inverse retraction
    $\mathfrak g$a Lie algebra
    $\mathcal{G}$a (Lie) group
    $\log_p q$logarithmic map at $p \in \mathcal M$ of a point $q \in \mathcal M$$\log_p(q)$
    $\mathcal M$a manifold$\mathcal M_1, \mathcal M_2,\ldots,\mathcal N$
    $N_p \mathcal M$the normal space of the tangent space $T_p \mathcal M$ in some embedding $\mathcal E$ that should be clear from context
    $V$a normal vector from $N_p \mathcal M$$W$
    $\operatorname{Exp}$the matrix exponential
    $\operatorname{Log}$the matrix logarithm
    $\mathcal P_{q\gets p}X$parallel transportof the vector $X$ from $T_p\mathcal M$ to $T_q\mathcal M$
    $\mathcal P_{p,Y}X$parallel transport in direction $Y$of the vector $X$ from $T_p\mathcal M$ to $T_q\mathcal M$, $q = \exp_pY$
    $\mathcal P_{t_1\gets t_0}^cX$parallel transport along the curve $c$$\mathcal P^cX=\mathcal P_{1\gets 0}^cX$of the vector $X$ from $p=c(0)$ to $c(1)$
    $p$a point on $\mathcal M$$p_1, p_2, \ldots,q$for 3 points one might use $x,y,z$
    $\operatorname{retr}_pX$a retraction
    $ξ$a set of tangent vectors$\{X_1,\ldots,X_n\}$
    $T_p \mathcal M$the tangent space at $p$
    $X$a tangent vector from $T_p \mathcal M$$X_1,X_2,\ldots,Y,Z$sometimes written with base point $X_p$
    $\operatorname{tr}$trace (of a matrix)
    $\cdot^\mathrm{T}$transposed
    $e_i \in \mathbb R^n$the $i$th unit vector$e_i^n$the space dimension ($n$) is omited, when clear from context
    $B$a vector bundle
    $\mathcal T_{q\gets p}X$vector transportof the vector $X$ from $T_p\mathcal M$ to $T_q\mathcal M$
    $\mathcal T_{p,Y}X$vector transport in direction $Y$of the vector $X$ from $T_p\mathcal M$ to $T_q\mathcal M$, where $q$ is deretmined by $Y$, for example using the exponential map or some retraction.
    $\operatorname{Vol}(\mathcal M)$volume of manifold $\mathcal M$
    $\theta_p(X)$volume density for vector $X$ tangent at point $p$
    $\mathcal W$the Weingarten map $\mathcal W: T_p\mathcal M × N_p\mathcal M → T_p\mathcal M$$\mathcal W_p$the second notation to emphasize the dependency of the point $p\in\mathcal M$
    $0_k$the $k\times k$ zero matrix.
    diff --git a/v0.8.79/misc/references.html b/v0.8.79/misc/references.html new file mode 100644 index 0000000000..8b2620143d --- /dev/null +++ b/v0.8.79/misc/references.html @@ -0,0 +1,225 @@ + +References · Manifolds.jl

    Literature

    We are slowly moving to using DocumenterCitations.jl. The goal is to have all references used / mentioned in the documentation of Manifolds.jl also listed here. If you notice a reference still defined in a footnote, please change it into a BibTeX reference and open a PR

    Usually you will find a small reference section at the end of every documentation page that contains references for just that page.

    [AMT13]
    +
    + +
    [AMS08]
    +
    +
    P.-A. Absil, R. Mahony and R. Sepulchre. Optimization Algorithms on Matrix Manifolds. Princeton University Press (2008), available online at [press.princeton.edu/chapters/absil/](http://press.princeton.edu/chapters/absil/).
    +
    [ATV13]
    +
    +
    B. Afsari, R. Tron and R. Vidal. On the Convergence of Gradient Descent for Finding the Riemannian Center of Mass. SIAM Journal on Control and Optimization 51, 2230–2260 (2013), arXiv:1201.0925.
    +
    [AR13]
    +
    +
    D. Andrica and R.-A. Rohan. Computing the Rodrigues coefficients of the exponential map of the Lie groups of matrices. Balkan Journal of Geometry and Its Applications 18, 1–10 (2013).
    +
    [ALRV14]
    +
    +
    E. Andruchow, G. Larotonda, L. Recht and A. Varela. The left invariant metric in the general linear group. Journal of Geometry and Physics 86, 241–257 (2014), arXiv:1109.0520.
    +
    [ABBR23]
    +
    +
    S. D. Axen, M. Baran, R. Bergmann and K. Rzecki. Manifolds.jl: An Extensible Julia Framework for Data Analysis on Manifolds. AMS Transactions on Mathematical Software (2023), arXiv:2021.08777, accepted for publication.
    +
    [AJLS17]
    +
    +
    N. Ay, J. Jost, H. V. Lê and L. Schwachhöfer. Information Geometry. Springer Cham (2017).
    +
    [Bac14]
    +
    +
    M. Bačák. Computing medians and means in Hadamard spaces. SIAM Journal on Optimization 24, 1542–1566 (2014), arXiv:1210.2145, arXiv: [1210.2145](https://arxiv.org/abs/1210.2145).
    +
    [BZ21]
    +
    +
    T. Bendokat and R. Zimmermann. The real symplectic Stiefel and Grassmann manifolds: metrics, geodesics and applications, arXiv Preprint, 2108.12447 (2021).
    +
    [BZA20]
    +
    +
    T. Bendokat, R. Zimmermann and P.-A. Absil. A Grassmann Manifold Handbook: Basic Geometry and Computational Aspects, arXiv Preprint (2020), arXiv:2011.13699.
    +
    [BG18]
    +
    +
    R. Bergmann and P.-Y. Gousenbourger. A variational model for data fitting on manifolds by minimizing the acceleration of a Bézier curve. Frontiers in Applied Mathematics and Statistics 4 (2018), arXiv:1807.10090.
    +
    [BP08]
    +
    +
    E. Biny and S. Pods. The Geometry of Heisenberg Groups: With Applications in Signal Theory, Optics, Quantization, and Field Quantization. American Mathematical Socienty (2008).
    +
    [BCC20]
    +
    +
    P. Birtea, I. Caçu and D. Comănescu. Optimization on the real symplectic group. Monatshefte für Mathematik 191, 465–485 (2020).
    +
    [BST03]
    +
    +
    L. J. Boya, E. Sudarshan and T. Tilma. Volumes of compact manifolds. Reports on Mathematical Physics 52, 401–422 (2003).
    +
    [BP19]
    +
    +
    A. L. Brigant and S. Puechmorel. Approximation of Densities on Riemannian Manifolds. Entropy 21, 43 (2019).
    +
    [CV15]
    +
    +
    R. Chakraborty and B. C. Vemuri. Recursive Fréchet Mean Computation on the Grassmannian and Its Applications to Computer Vision. In: 2015 IEEE International Conference on Computer Vision (ICCV) (2015).
    +
    [CV19]
    +
    +
    R. Chakraborty and B. C. Vemuri. Statistics on the Stiefel manifold: Theory and applications. The Annals of Statistics 47 (2019), arXiv:1708.00045.
    +
    [CHSV16]
    +
    +
    G. Cheng, J. Ho, H. Salehian and B. C. Vemuri. Recursive Computation of the Fréchet Mean on Non-positively Curved Riemannian Manifolds with Applications. In: Riemannian Computing in Computer Vision, editors, 21–43. Springer, Cham (2016).
    +
    [CLLD22]
    +
    +
    E. Chevallier, D. Li, Y. Lu and D. B. Dunson. Exponential-wrapped distributions on symmetric spaces. ArXiv Preprint (2022).
    +
    [CKA17]
    +
    +
    E. Chevallier, E. Kalunga and J. Angulo. Kernel Density Estimation on Spaces of Gaussian Distributions and Symmetric Positive Definite Matrices. SIAM Journal on Imaging Sciences 10, 191–215 (2017).
    +
    [Chi03]
    +
    +
    Y. Chikuse. Statistics on Special Manifolds. Springer New York (2003).
    +
    [Dev86]
    +
    +
    L. Devroye. Non-Uniform Random Variate Generation. Springer New York, NY (1986).
    +
    [DBV21]
    +
    +
    N. Dewaele, P. Breiding and N. Vannieuwenhoven. The condition number of many tensor decompositions is invariant under Tucker compression, arXiv Preprint (2021), arXiv:2106.13034.
    +
    [DH19]
    +
    +
    A. Douik and B. Hassibi. Manifold Optimization Over the Set of Doubly Stochastic Matrices: A Second-Order Geometry. IEEE Transactions on Signal Processing 67, 5761–5774 (2019), arXiv:1802.02628.
    +
    [EAS98]
    +
    +
    A. Edelman, T. A. Arias and S. T. Smith. The Geometry of Algorithms with Orthogonality Constraints. SIAM Journal on Matrix Analysis and Applications 20, 303–353 (1998), arXiv:806030.
    +
    [FdHDF19]
    +
    +
    L. Falorsi, P. de Haan, T. R. Davidson and P. Forré. Reparameterizing Distributions on Lie Groups, arXiv Preprint (2019).
    +
    [Fio11]
    +
    +
    S. Fiori. Solving Minimal-Distance Problems over the Manifold of Real-Symplectic Matrices. SIAM Journal on Matrix Analysis and Applications 32, 938–968 (2011).
    +
    [FVJ08]
    +
    +
    P. T. Fletcher, S. Venkatasubramanian and S. Joshi. Robust statistics on Riemannian manifolds via the geometric median. In: 2008 IEEE Conference on Computer Vision and Pattern Recognition (2008).
    +
    [GX02]
    +
    +
    J. Gallier and D. Xu. Computing exponentials of skew-symmetric matrices and logarithms of orthogonal matrices. International Journal of Robotics and Automation 17, 1–11 (2002).
    +
    [GSAS21]
    +
    +
    B. Gao, N. T. Son, P.-A. Absil and T. Stykel. Riemannian Optimization on the Symplectic Stiefel Manifold. SIAM Journal on Optimization 31, 1546–1575 (2021).
    +
    [GMTP21]
    +
    +
    N. Guigui, E. Maignant, A. Trouv{é} and X. Pennec. Parallel Transport on Kendall Shape Spaces. In: Geometric Science of Information, editors, 103–110. SPringer Cham (2021).
    +
    [HMJG21]
    +
    +
    A. Han, B. Mushra, P. Jawapanpuria and J. Gao. Learning with symmetric positive definite matrices via generalized Bures-Wasserstein geometry, arXive preprint (2021), arXiv:2110.10464.
    +
    [HCSV13]
    +
    +
    J. Ho, G. Cheng, H. Salehian and B. C. Vemuri. Recursive Karcher expectation estimators and geometric law of large numbers. In: 16th International Conference on Artificial Intelligence and Statistics (2013).
    +
    [HU17]
    +
    +
    S. Hosseini and A. Uschmajew. A Riemannian Gradient Sampling Algorithm for Nonsmooth Optimization on Manifolds. SIAM J. Optim. 27, 173–189 (2017).
    +
    [HGA15]
    +
    +
    W. Huang, K. A. Gallivan and P.-A. Absil. A Broyden Class of Quasi-Newton Methods for Riemannian Optimization. SIAM Journal on Optimization 25, 1660–1685 (2015).
    +
    [HML21]
    +
    +
    K. Hüper, I. Markina and F. S. Leite. A Lagrangian approach to extremal curves on Stiefel manifolds. Journal of Geometric Mechanics 13, 55 (2021).
    +
    [JBAS10]
    +
    +
    M. Journée, F. Bach, P.-A. Absil and R. Sepulchre. Low-Rank Optimization on the Cone of Positive Semidefinite Matrices. SIAM Journal on Optimization 20, 2327–2351 (2010), arXiv:0807.4423.
    +
    [KFT13]
    +
    +
    T. Kaneko, S. Fiori and T. Tanaka. Empirical Arithmetic Averaging Over the Compact Stiefel Manifold. IEEE Transactions on Signal Processing 61, 883–894 (2013).
    +
    [Kar77]
    +
    +
    H. Karcher. Riemannian center of mass and mollifier smoothing. Communications on Pure and Applied Mathematics 30, 509–541 (1977).
    +
    [Ken84]
    +
    +
    D. G. Kendall. Shape Manifolds, Procrustean Metrics, and Complex Projective Spaces. Bulletin of the London Mathematical Society 16, 81–121 (1984).
    +
    [Ken89]
    +
    +
    D. G. Kendall. A Survey of the Statistical Theory of Shape. Statistical Sciences 4, 87–99 (1989).
    +
    [KL10]
    +
    +
    O. Koch and C. Lubich. Dynamical Tensor Approximation. SIAM Journal on Matrix Analysis and Applications 31, 2360–2375 (2010).
    +
    [KSV13]
    +
    +
    D. Kressner, M. Steinlechner and B. Vandereycken. Low-rank tensor completion by Riemannian optimization. BIT Numerical Mathematics 54, 447–468 (2013).
    +
    [LW19]
    +
    +
    N. Langren{é} and X. Warin. Fast and Stable Multivariate Kernel Density Estimation by Fast Sum Updating. Journal of Computational and Graphical Statistics 28, 596–608 (2019).
    +
    [LMV00]
    +
    +
    L. D. Lathauwer, B. D. Moor and J. Vandewalle. A Multilinear Singular Value Decomposition. SIAM Journal on Matrix Analysis and Applications 21, 1253–1278 (2000).
    +
    [Lee19]
    +
    +
    J. M. Lee. Introduction to Riemannian Manifolds. Springer Cham (2019).
    +
    [Lin19]
    +
    +
    Z. Lin. Riemannian Geometry of Symmetric Positive Definite Matrices via Cholesky Decomposition. SIAM Journal on Matrix Analysis and Applications 40, 1353-1370 (2019), arXiv:1908.09326.
    +
    [MMP18]
    +
    +
    L. Malagó, L. Montrucchio and G. Pistone. Wasserstein Riemannian geometry of Gaussian densities. Information Geometry 1, 137–179 (2018).
    +
    [Mar72]
    +
    +
    G. Marsaglia. Choosing a Point from the Surface of a Sphere. Annals of Mathematical Statistics 43, 645–646 (1972).
    +
    [MA20]
    +
    +
    E. Massart and P.-A. Absil. Quotient Geometry with Simple Geodesics for the Manifold of Fixed-Rank Positive-Semidefinite Matrices. SIAM Journal on Matrix Analysis and Applications 41, 171–198 (2020). Preprint: [sites.uclouvain.be/absil/2018.06](https://sites.uclouvain.be/absil/2018.06).
    +
    [MF12]
    +
    +
    P. Muralidharan and P. T. Fletcher. Sasaki metrics for analysis of longitudinal data on manifolds. In: 2012 IEEE Conference on Computer Vision and Pattern Recognition (2012).
    +
    [NM16]
    +
    +
    P. Neff and R. J. Martin. Minimal geodesics on GL(n) for left-invariant, right-O(n)-invariant Riemannian metrics. J. Geom. Mech. 8, 323–357 (2016), arXiv:1409.7849.
    +
    [Ngu23]
    +
    +
    D. Nguyen. Operator-Valued Formulas for Riemannian Gradient and Hessian and Families of Tractable Metrics in Riemannian Optimization. Journal of Optimization Theory and Applications 198, 135–164 (2023), arXiv:2009.10159.
    +
    [Pen06]
    +
    +
    X. Pennec. Intrinsic Statistics on Riemannian Manifolds: Basic Tools for Geometric Measurements. Journal of Mathematical Imaging and Vision 25, 127–154 (2006).
    +
    [PA12]
    +
    +
    X. Pennec and V. Arsigny. Exponential Barycenters of the Canonical Cartan Connection and Invariant Means on Lie Groups. In: Matrix Information Geometry, editors, 123–166. Springer, Berlin, Heidelberg (2012), arXiv:00699361.
    +
    [PL20]
    +
    +
    X. Pennec and M. Lorenzi. Beyond Riemannian geometry: The affine connection setting for transformation groups. In: Riemannian Geometric Statistics in Medical Image Analysis, editors, 169–229. Elsevier (2020).
    +
    [Ren11]
    +
    +
    Q. Rentmeesters. A gradient method for geodesic data fitting on some symmetric Riemannian manifolds. In: IEEE Conference on Decision and Control and European Control Conference, 7141–7146 (2011).
    +
    [Ric88]
    +
    +
    J. M. Rico Martinez. Representations of the Euclidean group and its applications to the kinematics of spatial chains. Phd thesis, University of FLorida (1988).
    +
    [SCaO+15]
    +
    +
    H. Salehian, R. Chakraborty, E. and Ofori, D. Vaillancourt and B. C. Vemuri. An efficient recursive estimator of the Fréchet mean on hypersphere with applications to Medical Image Analysis. In: 5th MICCAI workshop on Mathematical Foundations of Computational Anatomy (2015).
    +
    [Sas58]
    +
    +
    S. Sasaki. On the differential geometry of tangent bundles of Riemannian manifolds. Tohoku Math. J. 10 (1958).
    +
    [SK16]
    +
    +
    A. Srivastava and E. P. Klassen. Functional and Shape Data Analysis. Springer New York (2016).
    +
    [Suh13]
    +
    +
    E. Suhubi. Exterior Analysis: Using Applications of Differential Forms. Academic Press (2013).
    +
    [Tor20]
    +
    +
    S. Tornier. Haar Measures (2020).
    +
    [TD17]
    +
    +
    R. Tron and K. Daniilidis. The Space of Essential Matrices as a Riemannian Quotient Manifold. SIAM J. Imaging Sci. 10, 1416–1445 (2017).
    +
    [Van13]
    +
    +
    B. Vandereycken. Low-rank matrix completion by Riemannian optimization. SIAM Journal on Optimization 23, 1214–1236 (2013).
    +
    [VVM12]
    +
    +
    N. Vannieuwenhoven, R. Vandebril and K. Meerbergen. A New Truncation Strategy for the Higher-Order Singular Value Decomposition. SIAM Journal on Scientific Computing 34, A1027–A1052 (2012).
    +
    [WSF18]
    +
    +
    J. Wang, H. Sun and S. Fiori. A Riemannian-steepest-descent approach for optimization on the real symplectic group. Mathematical Methods in the Applied Science 41, 4273–4286 (2018).
    +
    [Wes79]
    +
    +
    D. H. West. Updating mean and variance estimates. Communications of the ACM 22, 532–535 (1979).
    +
    [YWL21]
    +
    +
    K. Ye, K. S.-W. Wong and L.-H. Lim. Optimization on flag manifolds. Mathematical Programming 194, 621–660 (2021).
    +
    [Zhu16]
    +
    +
    X. Zhu. A Riemannian conjugate gradient method for optimization on the Stiefel manifold. Computational Optimization and Applications 67, 73–110 (2016).
    +
    [ZD18]
    +
    +
    X. Zhu and C. Duan. On matrix exponentials and their approximations related to optimization on the Stiefel manifold. Optimization Letters 13, 1069–1083 (2018).
    +
    [Zim17]
    +
    +
    R. Zimmermann. A Matrix-Algebraic Algorithm for the Riemannian Logarithm on the Stiefel Manifold under the Canonical Metric. SIAM J. Matrix Anal. Appl. 38, 322–342 (2017), arXiv:1604.05054.
    +
    [ZH22]
    +
    +
    R. Zimmermann and K. Hüper. Computing the Riemannian Logarithm on the Stiefel Manifold: Metrics, Methods, and Performance. SIAM Journal on Matrix Analysis and Applications 43, 953-980 (2022), arXiv:2103.12046.
    +
    [APSS17]
    +
    +
    F. Åström, S. Petra, B. Schmitzer and C. Schnörr. Image Labeling by Assignment. Journal of Mathematical Imaging and Vision 58, 211–238 (2017), arXiv:1603.05285.
    +
    +
    diff --git a/v0.8.79/references.bib b/v0.8.79/references.bib new file mode 100644 index 0000000000..46e3f3d19b --- /dev/null +++ b/v0.8.79/references.bib @@ -0,0 +1,829 @@ +# Manifold.jl +# +# Literature used within the Documentation of Manifolds.jl +# ======================================================== +# +# citekeys should be of the form AllAuthors:Year, unless there is really many authors. +# +# A +# ---------------------------------------------------------------------------------------- +@book{AbsilMahonySepulchre:2008, + AUTHOR = {Absil, P.-A. and Mahony, R. and Sepulchre, R.}, + DOI = {10.1515/9781400830244}, + NOTE = {available online at [press.princeton.edu/chapters/absil/](http://press.princeton.edu/chapters/absil/)}, + PUBLISHER = {Princeton University Press}, + TITLE = {Optimization Algorithms on Matrix Manifolds}, + YEAR = {2008}, +} +@incollection{AbsilMahonyTrumpf:2013, + AUTHOR = {P. -A. Absil and Robert Mahony and Jochen Trumpf}, + YEAR = {2013}, + DOI = {10.1007/978-3-642-40020-9_39}, + EDITOR = {Nielsen, Frank + and Barbaresco, Frédéric}, + ISBN = {978-3-642-40020-9}, + PUBLISHER = {Springer Berlin Heidelberg}, + PAGES = {361--368}, + TITLE = {An Extrinsic Look at the Riemannian Hessian}, + BOOKTITLE = {Geometric Science of Information}, +} +@article{AfsariTronVidal:2013, + DOI = {10.1137/12086282x}, + EPRINT = {1201.0925}, + EPRINTTYPE = {arXiv}, + YEAR = {2013}, + VOLUME = {51}, + NUMBER = {3}, + PAGES = {2230--2260}, + AUTHOR = {Bijan Afsari and Roberto Tron and René Vidal}, + TITLE = {On the Convergence of Gradient Descent for Finding the Riemannian Center of Mass}, + JOURNAL = {SIAM Journal on Control and Optimization} +} +@article{AndricaRohan:2013, + AUTHOR = {Andrica, D. and Rohan, R.-A.}, + ISSUE = {2}, + JOURNAL = {Balkan Journal of Geometry and Its Applications}, + PAGES = {1–10}, + TITLE = {Computing the Rodrigues coefficients of the exponential map of the Lie groups of matrices}, + URL = {https://www.emis.de/journals/BJGA/v18n2/B18-2-an.pdf}, + VOLUME = {18}, + YEAR = {2013}, +} +@article{AndruchowLarotondaRechtVarela:2014, + DOI = {10.1016/j.geomphys.2014.08.009}, + EPRINT = {1109.0520}, + EPRINTTYPE = {arXiv}, + YEAR = {2014}, + VOLUME = {86}, + PAGES = {241--257}, + AUTHOR = {E. Andruchow and G. Larotonda and L. Recht and A. Varela}, + TITLE = {The left invariant metric in the general linear group}, + JOURNAL = {Journal of Geometry and Physics} +} +@book{AyJostLeSchwachhoefer:2017, + DOI = {10.1007/978-3-319-56478-4}, + YEAR = {2017}, + AUTHOR = {Nihat Ay and Jürgen Jost and Hông Vân Lê and Lorenz Schwachhöfer}, + TITLE = {Information Geometry}, + PUBLISHER = {Springer Cham} +} +@article{AxenBaranBergmannRzecki:2023, + AUTHOR = {Seth D. Axen and Mateusz Baran and Ronny Bergmann and Krzysztof Rzecki}, + EPRINT = {2021.08777}, + EPRINTTYPE = {arXiv}, + JOURNAL = {AMS Transactions on Mathematical Software}, + NOTE = {accepted for publication}, + TITLE = {Manifolds.jl: An Extensible {J}ulia Framework for Data Analysis on Manifolds}, + YEAR = {2023} +} +# +# B +# ---------------------------------------------------------------------------------------- +@article{Bacak:2014, + AUTHOR = {Bačák, M.}, + DOI = {10.1137/140953393}, + EPRINT = {1210.2145}, + EPRINTTYPE = {arXiv}, + JOURNAL = {SIAM Journal on Optimization}, + NOTE = {arXiv: [1210.2145](https://arxiv.org/abs/1210.2145)}, + NUMBER = {3}, + PAGES = {1542--1566}, + TITLE = {Computing medians and means in Hadamard spaces}, + VOLUME = {24}, + YEAR = {2014} +} +@article{BendokatZimmermann:2021, + AUTHOR = {Bendokat, Thomas and Zimmermann, Ralf}, + Journal = {arXiv Preprint, 2108.12447}, + TITLE = {The real symplectic Stiefel and Grassmann manifolds: metrics, geodesics and applications}, + URL = {https://arxiv.org/abs/2108.12447}, + YEAR = {2021} +} +@article{BendokatZimmermannAbsil:2020, + AUTHOR = {Bendokat, Thomas and Zimmermann, Ralf and Absil, Pierre-Antoine}, + EPRINT = {2011.13699}, + EPRINTTYPE = {arXiv}, + JOURNAL = {arXiv Preprint}, + TITLE = {A Grassmann Manifold Handbook: Basic Geometry and Computational Aspects}, + URL = {https://arxiv.org/abs/2011.13699}, + YEAR = {2020} +} +@article{BergmannGousenbourger:2018, + AUTHOR = {Bergmann, Ronny and Gousenbourger, Pierre-Yves}, + DOI = {10.3389/fams.2018.00059}, + EPRINT = {1807.10090}, + EPRINTTYPE = {arXiv}, + JOURNAL = {Frontiers in Applied Mathematics and Statistics}, + TITLE = {A variational model for data fitting on manifolds by minimizing the acceleration of a Bézier curve}, + VOLUME = {4}, + YEAR = {2018} +} +@book{BinzPods:2008, + AUTHOR = {Biny, E and Pods, S}, + PUBLISHER = {American Mathematical Socienty}, + TITLE = {The Geometry of Heisenberg Groups: With Applications in Signal Theory, Optics, Quantization, and Field Quantization}, + YEAR = {2008} +} +@article{BirteaCaşuComănescu:2020, + DOI = {10.1007/s00605-020-01369-9}, + YEAR = {2020}, + VOLUME = {191}, + NUMBER = {3}, + PAGES = {465--485}, + AUTHOR = {Petre Birtea and Ioan Caçu and Dan Comănescu}, + TITLE = {Optimization on the real symplectic group}, + JOURNAL = {Monatshefte für Mathematik} +} +@article{BoyaSudarshanTilma:2003, + DOI = {10.1016/s0034-4877(03)80038-1}, + YEAR = 2003, + VOLUME = {52}, + NUMBER = {3}, + PAGES = {401--422}, + AUTHOR = {Luis J. Boya and E.C.G. Sudarshan and Todd Tilma}, + TITLE = {Volumes of compact manifolds}, + JOURNAL = {Reports on Mathematical Physics} +} + +@book{Boumal:2023, + TITLE = {An Introduction to Optimization on Smooth Manifolds}, + AUTHOR = {Boumal, Nicolas}, + YEAR = {2023}, + MONTH = mar, + EDITION = {First}, + PUBLISHER = {Cambridge University Press}, + DOI = {10.1017/9781009166164}, + URLDATE = {2023-07-13}, + ABSTRACT = {Optimization on Riemannian manifolds-the result of smooth geometry and optimization merging into one elegant modern framework-spans many areas of science and engineering, including machine learning, computer vision, signal processing, dynamical systems and scientific computing. This text introduces the differential geometry and Riemannian geometry concepts that will help students and researchers in applied mathematics, computer science and engineering gain a firm mathematical grounding to use these tools confidently in their research. Its charts-last approach will prove more intuitive from an optimizer's viewpoint, and all definitions and theorems are motivated to build time-tested optimization algorithms. Starting from first principles, the text goes on to cover current research on topics including worst-case complexity and geodesic convexity. Readers will appreciate the tricks of the trade for conducting research and for numerical implementations sprinkled throughout the book.}, + ISBN = {978-1-00-916616-4}, + URL = {https://www.nicolasboumal.net/#book} +} +@article{LeBrignantPuechmorel:2019, + DOI = {10.3390/e21010043}, + YEAR = 2019, + VOLUME = {21}, + NUMBER = {1}, + PAGES = {43}, + AUTHOR = {Alice Le Brigant and St{\'{e}}phane Puechmorel}, + TITLE = {Approximation of Densities on Riemannian Manifolds}, + JOURNAL = {Entropy} +} +# +# C +# ---------------------------------------------------------------------------------------- +@book{Chikuse:2003, + DOI = {10.1007/978-0-387-21540-2}, + YEAR = {2003}, + AUTHOR = {Yasuko Chikuse}, + PUBLISHER = {Springer New York}, + TITLE = {Statistics on Special Manifolds} +} +@inproceedings{ChakrabortyVemuri:2015, + AUTHOR = {Rudrasis Chakraborty and Baba C. Vemuri}, + BOOKTITLE = {2015 {IEEE} International Conference on Computer Vision (ICCV)}, + DOI = {10.1109/iccv.2015.481}, + TITLE = {Recursive Fréchet Mean Computation on the Grassmannian and Its Applications to Computer Vision}, + YEAR = {2015} +} +@article{ChakrabortyVemuri:2019, + DOI = {10.1214/18-aos1692}, + EPRINT = {1708.00045}, + EPRINTTYPE = {1708.00045}, + YEAR = {2019}, + VOLUME = {47}, + NUMBER = {1}, + AUTHOR = {Rudrasis Chakraborty and Baba C. Vemuri}, + TITLE = {Statistics on the Stiefel manifold: Theory and applications}, + JOURNAL = {The Annals of Statistics} +} +@incollection{ChengHoSalehianVemuri:2016, + AUTHOR = {Guang Cheng and Jeffrey Ho and Hesamoddin Salehian and Baba C. Vemuri}, + BOOKTITLE = {Riemannian Computing in Computer Vision}, + DOI = {10.1007/978-3-319-22957-7_2}, + PAGES = {21--43}, + PUBLISHER = {Springer, Cham}, + TITLE = {Recursive Computation of the Fréchet Mean on Non-positively Curved Riemannian Manifolds with Applications}, + YEAR = {2016} +} +@article{ChevallierKalungaAngulo:2017, + DOI = {10.1137/15m1053566}, + YEAR = 2017, + VOLUME = {10}, + NUMBER = {1}, + PAGES = {191--215}, + AUTHOR = {Emmanuel Chevallier and Emmanuel Kalunga and Jes{\'{u}}s Angulo}, + TITLE = {Kernel Density Estimation on Spaces of Gaussian Distributions and Symmetric Positive Definite Matrices}, + JOURNAL = {{SIAM} Journal on Imaging Sciences} +} +@article{ChevallierLiLuDunson:2022, + AUTHOR = {Chevallier, E. and Li, D. and Lu, Y. and Dunson, D. B.}, + JOURNAL = {ArXiv Preprint}, + TITLE = {Exponential-wrapped distributions on symmetric spaces}, + URL = {https://doi.org/10.48550/arXiv.2009.01983}, + YEAR = {2022} +} +# +# D +# ---------------------------------------------------------------------------------------- +@book{Devroye:1986, + DOI = {10.1007/978-1-4613-8643-8}, + YEAR = {1986}, + AUTHOR = {Luc Devroye}, + TITLE = {Non-Uniform Random Variate Generation}, + PUBLISHER = {Springer New York, NY} +} +@article{DewaeleBreidingVannieuwenhoven:2021, + AUTHOR = {Dewaele, Nick and Breiding, Paul and Vannieuwenhoven, Nick}, + EPRINT = {2106.13034}, + EPRINTTYPE = {arXiv}, + JOURNAL = {arXiv Preprint}, + TITLE = {The condition number of many tensor decompositions is invariant under Tucker compression}, + URL = {https://arxiv.org/abs/2106.13034}, + YEAR = {2021} +} +@article{DouikHassibi:2019, + DOI = {10.1109/tsp.2019.2946024}, + EPRINT = {1802.02628}, + YEAR = {2019}, + VOLUME = {67}, + NUMBER = {22}, + PAGES = {5761--5774}, + AUTHOR = {Ahmed Douik and Babak Hassibi}, + TITLE = {Manifold Optimization Over the Set of Doubly Stochastic Matrices: A Second-Order Geometry}, + JOURNAL = {IEEE Transactions on Signal Processing} +} +# +# E +# ---------------------------------------------------------------------------------------- +@article{EdelmanAriasSmith:1998, + DOI = {10.1137/s0895479895290954}, + EPRINT = {806030}, + EPRINTTYPE = {arXiv}, + YEAR = {1998}, + VOLUME = {20}, + NUMBER = {2}, + PAGES = {303--353}, + AUTHOR = {Alan Edelman and Tomás A. Arias and Steven T. Smith}, + TITLE = {The Geometry of Algorithms with Orthogonality Constraints}, + JOURNAL = {SIAM Journal on Matrix Analysis and Applications} +} +# +# F +# ---------------------------------------------------------------------------------------- +@article{FalorsideHaanDavidsonForre:2019, + AUTHOR = {Falorsi, Luca and de Haan, Pim and Davidson, Tim R. and Forré, Patrick}, + JOURNAL = {arXiv Preprint}, + URL = {https://arxiv.org/abs/1903.02958}, + TITLE = {Reparameterizing Distributions on Lie Groups}, + YEAR = {2019}, +} +@article{Fiori:2011, + DOI = {10.1137/100817115}, + YEAR = {2011}, + VOLUME = {32}, + NUMBER = {3}, + PAGES = {938--968}, + AUTHOR = {Simone Fiori}, + TITLE = {Solving Minimal-Distance Problems over the Manifold of Real-Symplectic Matrices}, + JOURNAL = {SIAM Journal on Matrix Analysis and Applications} +} +@inproceedings{FletcherVenkatasubramanianJoshi:2008, + DOI = {10.1109/cvpr.2008.4587747}, + YEAR = {2008}, + AUTHOR = {P. Thomas Fletcher and Suresh Venkatasubramanian and Sarang Joshi}, + TITLE = {Robust statistics on Riemannian manifolds via the geometric median}, + BOOKTITLE = {2008 {IEEE} Conference on Computer Vision and Pattern Recognition} +} +# +# G +# ---------------------------------------------------------------------------------------- +@article{GallierXu:2002, + AUTHOR = {Gallier, J and Xu, D}, + ISSUE = {4}, + JOURNAL = {International Journal of Robotics and Automation}, + PAGES = {1–11}, + TITLE = {Computing exponentials of skew-symmetric matrices and logarithms of orthogonal matrices}, + VOLUME = {17}, + URL = {http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.35.3205}, + YEAR = {2002} +} +@article{GaoSonAbsilStykel:2021, + DOI = {10.1137/20m1348522}, + YEAR = {2021}, + VOLUME = {31}, + NUMBER = {2}, + PAGES = {1546--1575}, + AUTHOR = {Bin Gao and Nguyen Thanh Son and P.-A. Absil and Tatjana Stykel}, + TITLE = {Riemannian Optimization on the Symplectic Stiefel Manifold}, + JOURNAL = {SIAM Journal on Optimization} +} +@incollection{GuiguiMaignantTroouvePennec:2021, + DOI = {10.1007/978-3-030-80209-7_12}, + YEAR = {2021}, + PAGES = {103--110}, + AUTHOR = {Nicolas Guigui and Elodie Maignant and Alain Trouv{\'{e}} and Xavier Pennec}, + TITLE = {Parallel Transport on Kendall Shape Spaces}, + BOOKTITLE = {Geometric Science of Information}, + PUBLISHER = {SPringer Cham} +} +# +# H +# ---------------------------------------------------------------------------------------- +@article{HanMishraJawanpuriaGao:2021, + AUTHOR = {Han, A and Mushra, B and Jawapanpuria, P and Gao, J}, + EPRINT = {2110.10464}, + EPRINTTYPE = {arXiv}, + JOURNAL = {arXive preprint}, + URL = {https://arxiv.org/abs/2110.10464}, + TITLE = {Learning with symmetric positive definite matrices via generalized Bures-Wasserstein geometry}, + YEAR = {2021}, +} +@inproceedings{HoChengSalehianVemuri:2013, + AUTHOR = {Ho, J. and Cheng, G. and Salehian, H. and Vemuri, B. C.}, + BOOKTITLE = {16th International Conference on Artificial Intelligence and Statistics}, + TITLE = {Recursive Karcher expectation estimators and geometric law of large numbers}, + YEAR = {2013}, + URL={http://proceedings.mlr.press/v31/ho13a.pdf} +} +@article{HosseiniUschmajew:2017, + DOI = {10.1137/16m1069298}, + YEAR = {2017}, + VOLUME = {27}, + NUMBER = {1}, + PAGES = {173--189}, + AUTHOR = {Seyedehsomayeh Hosseini and André Uschmajew}, + TITLE = {A Riemannian Gradient Sampling Algorithm for Nonsmooth Optimization on Manifolds}, + JOURNAL = {SIAM J. Optim.} +} +@article{HuangGallivanAbsil:2015, + DOI = {10.1137/140955483}, + YEAR = {2015}, + VOLUME = {25}, + NUMBER = {3}, + PAGES = {1660--1685}, + AUTHOR = {Wen Huang and K. A. Gallivan and P.-A. Absil}, + TITLE = {A Broyden Class of Quasi-Newton Methods for Riemannian Optimization}, + JOURNAL = {SIAM Journal on Optimization} +} +@article{HueperMarkinaSilvaLeite:2021, + DOI = {10.3934/jgm.2020031}, + YEAR = {2021}, + VOLUME = {13}, + NUMBER = {1}, + PAGES = {55}, + AUTHOR = {Knut Hüper and Irina Markina and F{\'{a}}tima Silva Leite}, + TITLE = {A Lagrangian approach to extremal curves on Stiefel manifolds}, + JOURNAL = {Journal of Geometric Mechanics} +} +# +# I +# ---------------------------------------------------------------------------------------- + +# +# J +# ---------------------------------------------------------------------------------------- +@article{JourneeBachAbsilSepulchre:2010, + DOI = {10.1137/080731359}, + EPRINT = {0807.4423}, + EPRINTTYPE = {arXiv}, + YEAR = {2010}, + VOLUME = {20}, + NUMBER = {5}, + PAGES = {2327--2351}, + AUTHOR = {M. Journée and F. Bach and P.-A. Absil and R. Sepulchre}, + TITLE = {Low-Rank Optimization on the Cone of Positive Semidefinite Matrices}, + JOURNAL = {SIAM Journal on Optimization} +} +# +# K +# ---------------------------------------------------------------------------------------- +@article{KanekoFioriTanaka:2013, + DOI = {10.1109/tsp.2012.2226167}, + YEAR = 2013, + VOLUME = {61}, + NUMBER = {4}, + PAGES = {883--894}, + AUTHOR = {Tetsuya Kaneko and Simone Fiori and Toshihisa Tanaka}, + TITLE = {Empirical Arithmetic Averaging Over the Compact Stiefel Manifold}, + JOURNAL = {IEEE Transactions on Signal Processing} +} +@article{Karcher:1977, + AUTHOR = {Karcher, H.}, + DOI = {10.1002/cpa.3160300502}, + JOURNAL = {Communications on Pure and Applied Mathematics}, + NUMBER = {5}, + PAGES = {509--541}, + TITLE = {Riemannian center of mass and mollifier smoothing}, + VOLUME = {30}, + YEAR = {1977} +} +@article{Kendall:1984, + DOI = {10.1112/blms/16.2.81}, + YEAR = {1984}, + VOLUME = {16}, + NUMBER = {2}, + PAGES = {81--121}, + AUTHOR = {David G. Kendall}, + TITLE = {Shape Manifolds, Procrustean Metrics, and Complex Projective Spaces}, + JOURNAL = {Bulletin of the London Mathematical Society} +} +@article{Kendall:1989, + DOI = {10.1214/ss/1177012582}, + YEAR = {1989}, + VOLUME = {4}, + NUMBER = {2}, + PAGES = {87–99}, + AUTHOR = {David G. Kendall}, + TITLE = {A Survey of the Statistical Theory of Shape}, + JOURNAL = {Statistical Sciences} +} +@article{KochLubich:2010, + DOI = {10.1137/09076578x}, + YEAR = {2010}, + VOLUME = {31}, + NUMBER = {5}, + PAGES = {2360--2375}, + AUTHOR = {Othmar Koch and Christian Lubich}, + TITLE = {Dynamical Tensor Approximation}, + JOURNAL = {{SIAM} Journal on Matrix Analysis and Applications} +} +@article{KressnerSteinlechnerVandereycken:2013, + DOI = {10.1007/s10543-013-0455-z}, + YEAR = 2013, + VOLUME = {54}, + NUMBER = {2}, + PAGES = {447--468}, + AUTHOR = {Daniel Kressner and Michael Steinlechner and Bart Vandereycken}, + TITLE = {Low-rank tensor completion by Riemannian optimization}, + JOURNAL = {{BIT} Numerical Mathematics} +} +# +# L +# ---------------------------------------------------------------------------------------- +julia> doi2bib("10.1080/10618600.2018.1549052"; abbreviate=false) +@article{LangreneMarin:2019, + DOI = {10.1080/10618600.2018.1549052}, + YEAR = 2019, + VOLUME = {28}, + NUMBER = {3}, + PAGES = {596--608}, + AUTHOR = {Nicolas Langren{\'{e}} and Xavier Warin}, + TITLE = {Fast and Stable Multivariate Kernel Density Estimation by Fast Sum Updating}, + JOURNAL = {Journal of Computational and Graphical Statistics} +} +@article{DeLathauwerDeMoorVanderwalle:2000, + DOI = {10.1137/s0895479896305696}, + YEAR = 2000, + VOLUME = {21}, + NUMBER = {4}, + PAGES = {1253--1278}, + AUTHOR = {Lieven De Lathauwer and Bart De Moor and Joos Vandewalle}, + TITLE = {A Multilinear Singular Value Decomposition}, + JOURNAL = {SIAM Journal on Matrix Analysis and Applications} +} +@article{Lin:2019, + AUTHOR = {Lin, Zhenhua}, + TITLE = {Riemannian Geometry of Symmetric Positive Definite Matrices via Cholesky Decomposition}, + JOURNAL = {SIAM Journal on Matrix Analysis and Applications}, + VOLUME = {40}, + NUMBER = {4}, + PAGES = {1353-1370}, + YEAR = {2019}, + DOI = {10.1137/18M1221084}, + EPRINT = {1908.09326}, + EPRINTTYPE = {arXiv}, +} +@article{LorenziPennec:2013, + DOI = {10.1007/s10851-013-0470-3}, + EPRINT = {00870489}, + EPRINTTYPE = {HAL}, + YEAR = {2013}, + VOLUME = {50}, + NUMBER = {1-2}, + PAGES = {5--17}, + AUTHOR = {Marco Lorenzi and Xavier Pennec}, + TITLE = {Efficient Parallel Transport of Deformations in Time Series of Images: From Schild's to Pole Ladder}, + JOURNAL = {Journal of Mathematical Imaging and Vision} +} +@book{Lee:2019, + AUTHOR = {John M. Lee}, + DOI = {10.1007/978-3-319-91755-9}, + ISBN = {978-3-319-91755-9}, + PUBLISHER = {Springer Cham}, + TITLE = {Introduction to Riemannian Manifolds}, + YEAR = {2019} +} +# +# M +# ---------------------------------------------------------------------------------------- +@article{MalagoMontruccioPistone:2018, + DOI = {10.1007/s41884-018-0014-4}, + YEAR = {2018}, + VOLUME = {1}, + NUMBER = {2}, + PAGES = {137--179}, + AUTHOR = {Luigi Malagó and Luigi Montrucchio and Giovanni Pistone}, + TITLE = {Wasserstein Riemannian geometry of Gaussian densities}, + JOURNAL = {Information Geometry} +} +@article{Marsaglia:1972, + DOI = {10.1214/aoms/1177692644}, + YEAR = {1972}, + VOLUME = {43}, + NUMBER = {2}, + PAGES = {645--646}, + AUTHOR = {George Marsaglia}, + TITLE = {Choosing a Point from the Surface of a Sphere}, + JOURNAL = {Annals of Mathematical Statistics} +} +@article{MartinNeff:2016, + DOI = {10.3934/jgm.2016010}, + EPRINT = {1409.7849}, + EPRINTTYPE = {arXiv}, + YEAR = {2016}, + VOLUME = {8}, + NUMBER = {3}, + PAGES = {323--357}, + AUTHOR = {Patrizio Neff and Robert J. Martin}, + TITLE = {Minimal geodesics on {GL}(n) for left-invariant, right-O(n)-invariant Riemannian metrics}, + JOURNAL = {J. Geom. Mech.} +} +@article{MassartAbsil:2020, + DOI = {10.1137/18m1231389}, + YEAR = {2020}, + VOLUME = {41}, + NOTE = {Preprint: [sites.uclouvain.be/absil/2018.06](https://sites.uclouvain.be/absil/2018.06)}, + NUMBER = {1}, + PAGES = {171--198}, + AUTHOR = {Estelle Massart and P.-A. Absil}, + TITLE = {Quotient Geometry with Simple Geodesics for the Manifold of Fixed-Rank Positive-Semidefinite Matrices}, + JOURNAL = {SIAM Journal on Matrix Analysis and Applications} +} +@inproceedings{MuralidharanFlecther:2012, + DOI = {10.1109/cvpr.2012.6247780}, + YEAR = 2012, + AUTHOR = {P. Muralidharan and P. T. Fletcher}, + TITLE = {Sasaki metrics for analysis of longitudinal data on manifolds}, + BOOKTITLE = {2012 {IEEE} Conference on Computer Vision and Pattern Recognition} +} + +# +# N +# ---------------------------------------------------------------------------------------- +@article{Nguyen:2023, + DOI = {10.1007/s10957-023-02242-z}, + EPRINT = {2009.10159}, + EPRINTTYPE = {arXiv}, + YEAR = {2023}, + MONTH = jun, + PUBLISHER = {Springer Science and Business Media LLC}, + VOLUME = {198}, + NUMBER = {1}, + PAGES = {135--164}, + AUTHOR = {Du Nguyen}, + TITLE = {Operator-Valued Formulas for Riemannian Gradient and Hessian and Families of Tractable Metrics in Riemannian Optimization}, + JOURNAL = {Journal of Optimization Theory and Applications} +} +# +# P +# ---------------------------------------------------------------------------------------- +@article{Pennec:2006, + DOI = {10.1007/s10851-006-6228-4}, + YEAR = {2006}, + VOLUME = {25}, + NUMBER = {1}, + PAGES = {127--154}, + AUTHOR = {Xavier Pennec}, + TITLE = {Intrinsic Statistics on Riemannian Manifolds: Basic Tools for Geometric Measurements}, + JOURNAL = {Journal of Mathematical Imaging and Vision} +} +@article{Pennec:2018, + AUTHOR ={Xavier Pennec}, + EPRINT = {1805.11436}, + EPRINTTYPE = {arXiv}, + Journal = {arXiv Preprint}, + TITLE = {Parallel Transport with Pole Ladder: a Third Order Scheme in Affine Connection Spaces which is Exact in Affine Symmetric Spaces.}, + YEAR = {2018}, + URL = {https://arxiv.org/abs/1805.11436}, +} +@incollection{PennecArsigny:2012, + DOI = {10.1007/978-3-642-30232-9_7}, + EPRINT = {00699361}, + EPRINTTYPE = {HAL}, + YEAR = {2012}, + PAGES = {123--166}, + AUTHOR = {Xavier Pennec and Vincent Arsigny}, + TITLE = {Exponential Barycenters of the Canonical Cartan Connection and Invariant Means on Lie Groups}, + BOOKTITLE = {Matrix Information Geometry}, + PUBLISHER = {Springer, Berlin, Heidelberg} +} +@incollection{PennecLorenzi:2020, + DOI = {10.1016/b978-0-12-814725-2.00012-1}, + EDITORS = {X. Pennec and S. Sommer and T. Fletcher}, + YEAR = {2020}, + PAGES = {169--229}, + AUTHOR = {Xavier Pennec and Marco Lorenzi}, + TITLE = {Beyond Riemannian geometry: The affine connection setting for transformation groups}, + BOOKTITLE = {Riemannian Geometric Statistics in Medical Image Analysis}, + PUBLISHER = {Elsevier} +} +# +# R +# ---------------------------------------------------------------------------------------- +@inproceedings{Rentmeesters:2011, + DOI = {10.1109/cdc.2011.6161280}, + YEAR = {2011}, + AUTHOR = {Quentin Rentmeesters}, + PAGES = {7141–7146}, + TITLE = {A gradient method for geodesic data fitting on some symmetric Riemannian manifolds}, + BOOKTITLE = {IEEE Conference on Decision and Control and European Control Conference} +} +@phdthesis{RicoMartinez:1988, + AUTHOR = {Rico Martinez, Jose Maria}, + SCHOOL = {University of FLorida}, + TITLE = {Representations of the Euclidean group and its applications to the kinematics of spatial chains}, + URL = {https://ufdc.ufl.edu/aa00040974/00001}, + YEAR = {1988} +} +# +# S +# ---------------------------------------------------------------------------------------- +@inproceedings{SalehianEtAl:2015, + AUTHOR = {Salehian, Hesamoddin and Chakraborty, Rudrasis and and Ofori, Edward and Vaillancourt, David and Vemuri, Baba C.}, + BOOKTITLE = {5th MICCAI workshop on Mathematical Foundations of Computational Anatomy}, + MONTH = {10}, + TITLE = {An efficient recursive estimator of the Fréchet mean on hypersphere with applications to Medical Image Analysis}, + URL = {https://www-sop.inria.fr/asclepios/events/MFCA15/Papers/MFCA15_4_2.pdf}, + YEAR = {2015}, +} +@article{Sasaki:1958, + DOI = {10.2748/tmj/1178244668}, + YEAR = {1958}, + VOLUME = {10}, + NUMBER = {3}, + AUTHOR = {Shigeo Sasaki}, + TITLE = {On the differential geometry of tangent bundles of Riemannian manifolds}, + JOURNAL = {Tohoku Math. J.} +} +@book{Suhubi:2013, + AUTHOR = {Suhubi, E}, + PUBLISHER = {Academic Press}, + TITLE = {Exterior Analysis: Using Applications of Differential Forms}, + YEAR = {2013} +} +@book{SrivastavaKlassen:2016, + AUTHOR = {Anuj Srivastava and Eric P. Klassen}, + DOI = {10.1007/978-1-4939-4020-2}, + ISBN = {978-1-4939-4018-9}, + PUBLISHER = {Springer New York}, + TITLE = {Functional and Shape Data Analysis}, + YEAR = {2016} +} +# +# T +# ---------------------------------------------------------------------------------------- +@misc{Tornier:2020, + AUTHOR = {Tornier, Stephan}, + TITLE = {Haar Measures}, + JOURNAL = {arXiv Preprint}, + URL = {https://arxiv.org/abs/2006.10956}, + YEAR = {2020}, +} + +@article{TronDaniilidis:2017, + DOI = {10.1137/16m1091332}, + YEAR = {2017}, + VOLUME = {10}, + NUMBER = {3}, + PAGES = {1416--1445}, + AUTHOR = {Roberto Tron and Kostas Daniilidis}, + TITLE = {The Space of Essential Matrices as a Riemannian Quotient Manifold}, + JOURNAL = {SIAM J. Imaging Sci.} +} +# +# V +# ---------------------------------------------------------------------------------------- +@article{Vandereycken:2013, + AUTHOR = {Vandereycken, Bart}, + PUBLISHER = {Society for Industrial \& Applied Mathematics (SIAM)}, + YEAR = {2013}, + DOI = {10.1137/110845768}, + JOURNAL = {SIAM Journal on Optimization}, + NUMBER = {2}, + PAGES = {1214--1236}, + TITLE = {Low-rank matrix completion by Riemannian optimization}, + VOLUME = {23} +} +@article{VannieuwenhovenVanderbrilMeerbergen:2012, + DOI = {10.1137/110836067}, + YEAR = {2012}, + VOLUME = {34}, + NUMBER = {2}, + PAGES = {A1027--A1052}, + AUTHOR = {Nick Vannieuwenhoven and Raf Vandebril and Karl Meerbergen}, + TITLE = {A New Truncation Strategy for the Higher-Order Singular Value Decomposition}, + JOURNAL = {SIAM Journal on Scientific Computing} +} + +# +# W +# ---------------------------------------------------------------------------------------- +@article{WangSunFiori:2018, + DOI = {10.1002/mma.4890}, + YEAR = {2018}, + VOLUME = {41}, + NUMBER = {11}, + PAGES = {4273--4286}, + AUTHOR = {Jing Wang and Huafei Sun and Simone Fiori}, + TITLE = {A Riemannian-steepest-descent approach for optimization on the real symplectic group}, + JOURNAL = {Mathematical Methods in the Applied Science} +} +@article{West:1979, + DOI = {10.1145/359146.359153}, + YEAR = {1979}, + VOLUME = {22}, + NUMBER = {9}, + PAGES = {532--535}, + AUTHOR = {D. H. D. West}, + TITLE = {Updating mean and variance estimates}, + JOURNAL = {Communications of the ACM} +} +# +# X +# ---------------------------------------------------------------------------------------- + +# +# Y +# ---------------------------------------------------------------------------------------- +@article{YeWongLim:2021, + DOI = {10.1007/s10107-021-01640-3}, + YEAR = {2021}, + VOLUME = {194}, + NUMBER = {1-2}, + PAGES = {621--660}, + AUTHOR = {Ke Ye and Ken Sze-Wai Wong and Lek-Heng Lim}, + TITLE = {Optimization on flag manifolds}, + JOURNAL = {Mathematical Programming} +} +# +# Z +# ---------------------------------------------------------------------------------------- +@article{Zhu:2016, + DOI = {10.1007/s10589-016-9883-4}, + YEAR = {2016}, + VOLUME = {67}, + NUMBER = {1}, + PAGES = {73--110}, + AUTHOR = {Xiaojing Zhu}, + TITLE = {A Riemannian conjugate gradient method for optimization on the Stiefel manifold}, + JOURNAL = {Computational Optimization and Applications} +} +@article{ZhuDuan:2018, + DOI = {10.1007/s11590-018-1341-z}, + YEAR = {2018}, + VOLUME = {13}, + NUMBER = {5}, + PAGES = {1069--1083}, + AUTHOR = {Xiaojing Zhu and Chunyan Duan}, + TITLE = {On matrix exponentials and their approximations related to optimization on the Stiefel manifold}, + JOURNAL = {Optimization Letters} +} +@article{Zimmermann:2017, + DOI = {10.1137/16m1074485}, + EPRINT = {1604.05054}, + EPRINTTYPE = {arXiv}, + YEAR = {2017}, + VOLUME = {38}, + NUMBER = {2}, + PAGES = {322--342}, + AUTHOR = {Ralf Zimmermann}, + TITLE = {A Matrix-Algebraic Algorithm for the Riemannian Logarithm on the Stiefel Manifold under the Canonical Metric}, + JOURNAL = {SIAM J. Matrix Anal. Appl.} +} +@article{ZimmermannHueper:2022, + AUTHOR = {Zimmermann, Ralf and Hüper, Knut}, + TITLE = {Computing the Riemannian Logarithm on the Stiefel Manifold: Metrics, Methods, and Performance}, + JOURNAL = {SIAM Journal on Matrix Analysis and Applications}, + VOLUME = {43}, + NUMBER = {2}, + PAGES = {953-980}, + YEAR = {2022}, + DOI = {10.1137/21M1425426}, + EPRINT = {2103.12046}, + EPRINTTYPE = {arXiv} +} +# +# Å +# ---------------------------------------------------------------------------------------- +@article{AastroemPetraSchmitzerSchnoerr:2017, + DOI = {10.1007/s10851-016-0702-4}, + EPRINT = {1603.05285}, + EPRINTTYPE = {arXiv}, + YEAR = {2017}, + VOLUME = {58}, + NUMBER = {2}, + PAGES = {211--238}, + AUTHOR = {Freddie Åström and Stefania Petra and Bernhard Schmitzer and Christoph Schnörr}, + TITLE = {Image Labeling by Assignment}, + JOURNAL = {Journal of Mathematical Imaging and Vision} +} \ No newline at end of file diff --git a/v0.8.79/search_index.js b/v0.8.79/search_index.js new file mode 100644 index 0000000000..a86bd9f65f --- /dev/null +++ b/v0.8.79/search_index.js @@ -0,0 +1,3 @@ +var documenterSearchIndex = {"docs": +[{"location":"tutorials/hand-gestures.html#Hand-gesture-analysis","page":"perform Hand gesture analysis","title":"Hand gesture analysis","text":"","category":"section"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"In this tutorial we will learn how to use Kendall’s shape space to analyze hand gesture data.","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"Let’s start by loading libraries required for our work.","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"using Manifolds, CSV, DataFrames, Plots, MultivariateStats","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"Our first function loads dataset of hand gestures, described here.","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"function load_hands()\n hands_url = \"https://raw.githubusercontent.com/geomstats/geomstats/master/geomstats/datasets/data/hands/hands.txt\"\n hand_labels_url = \"https://raw.githubusercontent.com/geomstats/geomstats/master/geomstats/datasets/data/hands/labels.txt\"\n\n hands = Matrix(CSV.read(download(hands_url), DataFrame, header=false))\n hands = reshape(hands, size(hands, 1), 3, 22)\n hand_labels = CSV.read(download(hand_labels_url), DataFrame, header=false).Column1\n return hands, hand_labels\nend","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"load_hands (generic function with 1 method)","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"The following code plots a sample gesture as a 3D scatter plot of points.","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"hands, hand_labels = load_hands()\nscatter3d(hands[1, 1, :], hands[1, 2, :], hands[1, 3, :])","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"(Image: )","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"Each gesture is represented by 22 landmarks in ℝ³, so we use the appropriate Kendall’s shape space","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"Mshape = KendallsShapeSpace(3, 22)","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"KendallsShapeSpace{3, 22}()","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"Hands read from the dataset are projected to the shape space to remove translation and scaling variability. Rotational variability is then handled using the quotient structure of KendallsShapeSpace","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"hands_projected = [project(Mshape, hands[i, :, :]) for i in axes(hands, 1)]","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"In the next part let’s do tangent space PCA. This starts with computing a mean point and computing logithmic maps at mean to each point in the dataset.","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"mean_hand = mean(Mshape, hands_projected)\nhand_logs = [log(Mshape, mean_hand, p) for p in hands_projected]","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"For a tangent PCA, we need coordinates in a basis. Some libraries skip this step because the representation of tangent vectors forms a linear subspace of an Euclidean space so PCA automatically detects which directions have no variance but this is a more generic way to solve this issue.","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"B = get_basis(Mshape, mean_hand, ProjectedOrthonormalBasis(:svd))\nhand_log_coordinates = [get_coordinates(Mshape, mean_hand, X, B) for X in hand_logs]","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"This code prepares data for MultivariateStats – mean=0 is set because we’ve centered the data geometrically to mean_hand in the code above.","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"red_coords = reduce(hcat, hand_log_coordinates)\nfp = fit(PCA, red_coords; mean=0)","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"PCA(indim = 59, outdim = 18, principalratio = 0.9900213563800988)\n\nPattern matrix (unstandardized loadings):\n─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n PC1 PC2 PC3 PC4 PC5 PC6 PC7 PC8 PC9 PC10 PC11 PC12 PC13 PC14 PC15 PC16 PC17 PC18\n─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n1 -0.0290105 0.0208927 -0.01643 0.00190549 0.00901145 0.000643771 -0.00363047 -0.00217327 0.00312554 -0.00356053 0.00478045 0.00165704 0.00218866 0.0037857 0.000320345 -0.00145212 0.000948335 -0.00184176\n2 0.0172527 0.0165863 -0.0168821 -0.0183233 0.0121555 0.00833736 0.00187667 -0.000648234 0.00706323 0.00583622 -0.0044018 0.0012355 0.00118376 -0.00246016 0.00446684 -0.00498993 -0.0028049 -0.00259758\n3 0.0447499 -0.00487667 -0.00247071 -0.00148697 -0.00200127 -0.00795338 0.00905314 0.00687454 0.0114088 -0.000998774 0.00459101 0.00645948 0.00073043 0.00591995 -0.00520394 0.00129428 -0.000463386 -0.00207384\n4 -0.00881422 -0.0341713 0.00749624 0.00795209 -0.00260601 0.00356386 0.00204456 -0.00905276 0.00826807 0.00012095 0.000768538 -0.000460691 0.00411022 -0.00216294 -0.000650028 0.00251224 0.00149784 -0.00181133\n5 0.0325794 -0.023796 0.000642765 0.00509869 0.00759807 0.00483368 -0.00252952 0.00656179 0.00322274 -0.000313146 0.00143493 -0.000676479 0.000146354 -0.00266203 0.00353957 0.0021415 -0.00457168 0.00282965\n6 -0.00617763 6.91201e-5 0.00765638 0.00183758 0.00157382 0.00184956 -0.00797935 0.000700457 0.0087012 0.00992564 0.00263642 0.00294279 -0.0092 0.00133877 0.00145735 -0.0014816 0.00235123 -0.00039541\n7 -0.0183122 0.0131045 0.0125222 -0.00638021 -0.006709 -0.00013628 0.00858169 -0.00159031 -0.00585433 -0.0032447 0.00880912 -0.00149308 0.000724205 0.00469925 0.00432005 0.0012382 -0.00251638 6.89878e-5\n8 0.0392874 -0.0152552 -0.00404674 -0.0183856 -0.0054739 0.000203488 0.00687526 0.00989129 -0.00570517 0.00234255 -0.00221344 -0.00514796 0.000658069 0.00220789 7.02581e-5 0.000380265 0.0007751 0.00234631\n9 -0.00525049 -0.0181427 -0.00473895 -0.0128126 0.000405834 -0.00936332 -0.000781745 0.011196 -0.00498502 0.00199077 0.00355555 -0.00334398 0.00763648 0.000311697 -0.000844841 -0.00526438 -0.00201977 0.00188678\n10 0.0771681 0.0248294 -0.00375548 -0.0138712 -0.0126479 -0.00543573 -0.0136609 -0.00408721 -0.00445726 -0.00407287 0.00696664 -0.00158737 -0.00201909 -0.00211184 0.000907502 0.00235338 -0.00259266 0.00114594\n11 -0.0013693 0.0125762 -0.00145726 0.0119688 -0.00362363 0.00954477 0.000894749 0.00311196 0.000186917 0.00923739 0.0036434 0.00484736 0.000288834 -0.00269382 -0.00194147 -0.000702207 -0.00245996 -0.000458531\n12 0.00497523 0.0154863 0.0409999 -0.00832204 -0.00216091 0.0149159 0.011796 0.0121391 -0.00292353 -0.00532504 -0.00427894 0.000550893 -0.00408841 0.000520159 -0.00344571 0.000625647 0.000271049 -0.00165807\n13 -0.0541357 -0.0291498 0.0140122 0.00292223 0.00128359 0.00301256 -0.00581861 -0.00397323 0.000588485 0.0025976 -0.00442985 -0.00603182 0.00326815 0.00326603 0.000384467 -0.00134404 -0.00160027 -0.00261985\n14 -0.0493144 0.0120223 -0.0163111 0.0103746 -0.0126512 -0.011453 0.00488614 -0.00586095 0.0027455 -0.00434342 0.00203457 -0.000941868 -0.00426973 -0.00447805 -0.00239537 -0.00320013 0.000877498 0.000673572\n15 -0.00654048 0.00225524 -0.028207 0.00306531 0.00321072 -0.000599231 0.00320363 -0.0059508 -0.00586048 0.0031903 -0.00613799 0.00471076 -0.00101853 0.00294667 -0.000548534 0.00402922 0.000405583 2.6607e-5\n16 0.0300802 0.0075843 0.00364836 -0.00205771 -0.0148831 0.0211394 -0.000508637 0.0036868 0.0109845 -0.00574404 -0.00920237 0.0007153 0.000544823 -0.00209521 0.000474541 -0.00052208 0.00180017 0.00202094\n17 -0.0110775 0.0373997 -0.00242133 0.00827109 -0.000567586 -0.0141686 -0.000939656 0.00843637 -0.00590348 0.00649057 0.00259619 -0.000897277 0.00443368 -0.0047585 -0.00160148 0.000335684 0.00152076 -0.00300398\n18 0.0391783 0.0248007 0.0308429 0.00118303 0.00981074 0.00261316 -0.00100239 -0.0062546 -0.00491006 -0.00506867 0.00441608 -0.00367774 -0.00481009 -0.000493728 -0.00329753 0.000419403 0.000711267 0.000406243\n19 0.0138738 -0.0443171 -0.00598066 0.00585226 0.00596223 0.00680714 -0.0079294 -0.00269779 -0.00426069 -0.00718608 0.00761514 0.00336824 -0.00295577 -0.00264683 0.00316699 -0.000418376 -0.00240164 -0.00413196\n20 0.0173164 -0.0215417 0.000863689 -0.0205664 0.00121695 0.00307745 0.00191828 -0.00849558 -0.00147893 0.00180504 0.00814434 0.00372913 0.00188294 -0.00170647 -0.00451407 -0.00100769 -0.000238128 -0.000257117\n21 0.00338984 0.00237562 0.0237069 -0.0129184 0.00148197 -0.000855367 0.00148785 0.00142366 0.00320966 0.00781237 0.000800995 -0.000516126 0.00440079 -0.0079143 0.00215576 0.00201592 -0.000335618 0.00337192\n22 -0.00746071 -0.0116344 0.0021644 0.0152239 0.00723169 0.0120803 -0.000485058 0.00653526 0.0026666 0.00152026 0.0135607 -0.00247612 0.00348543 3.45051e-6 0.0017885 0.000179426 -0.000524643 -0.000805656\n23 0.0478442 -0.0227649 -0.0113793 -0.00367693 0.0106966 0.00169994 0.0135303 -0.00344929 0.000128235 0.00063693 -0.00225447 0.000880574 -0.00665083 -0.0050547 -0.00295617 -0.00422433 0.00166798 -0.00189465\n24 -0.0142467 0.0166931 0.00516018 0.00593988 -0.0210703 0.00438546 0.00643305 0.00174866 0.00505729 0.000463517 0.00763753 -0.00417294 -0.00156206 0.00540319 -0.00301265 -0.00408336 -0.00144362 -0.000137294\n25 0.00108012 0.0195339 0.011519 0.0110158 0.00193433 0.0107534 -0.00146174 0.000236797 0.00226925 -0.00744152 0.00199678 -0.00445237 0.00273993 -0.000207735 -0.00191042 0.00121896 0.00195283 -0.00274164\n26 0.0123466 0.0083253 0.00519553 -0.00196478 0.0137825 -0.00233978 -0.00771765 -0.00232805 -0.00279333 0.00340724 0.0012353 -0.00362154 -0.0013554 0.000632953 -2.37112e-5 0.00141247 -0.000568908 -0.000973567\n27 -0.00893091 0.00641791 0.0087648 0.00424429 -0.000824081 -0.00761539 -0.0152518 0.00995065 0.00317758 8.84094e-5 -0.00419563 -0.00124495 -0.00589762 -0.000929293 0.00477719 0.00377025 0.00267074 0.000761405\n28 0.0378644 -0.0125169 0.012799 0.0178141 0.00260966 -0.00752201 0.00299546 -0.00777486 0.00426756 0.00566038 0.00107451 -0.000215202 -0.00470252 0.00209217 -0.000578698 0.00150591 -0.00148331 0.00229085\n29 0.00205475 0.0304241 -0.0354979 0.00394855 -0.00350914 0.00725592 -0.00678139 0.000307436 -0.00315394 -0.00689183 0.000456785 0.00368637 0.00277269 -0.00277076 -0.00422942 0.00223455 0.0015448 -0.00234455\n30 0.0749975 -0.00999942 0.00367276 0.0100629 -0.00671752 -0.011357 0.00301586 0.000408736 0.00259563 0.000303288 -0.000111357 -0.00159763 0.00161827 -0.000545339 0.00377406 0.00268094 0.00406555 -0.00203144\n31 0.0209729 0.00213421 0.00669869 0.016557 0.00403684 -0.0178951 0.0107244 0.0111298 0.00610797 -0.00390215 -0.00353771 -0.00178467 0.00235713 0.000973802 0.000274041 0.00218045 -0.00215689 -0.00158819\n32 -0.0244084 -0.0371206 0.0192767 -0.000685794 0.0158289 -0.001451 -0.00509477 0.00577056 -0.00513049 -0.00950968 -0.00158958 0.000989458 -0.000699212 0.00122133 -0.000191417 0.000911926 0.00209233 -6.04374e-5\n33 0.00565764 -0.0172793 0.00401092 -0.00793658 0.00504771 -0.00220381 0.00224319 0.0071918 -0.0124133 0.00175162 0.00348751 0.00633021 -0.00260535 0.00565187 -0.00186287 -0.000238933 0.000666333 0.00250607\n34 0.00185581 -0.0166196 -0.0197269 0.00699341 0.00647246 -0.00303065 -0.000117067 0.00490106 0.00667588 -0.00855122 0.00302462 0.00173228 0.00553969 -0.00468124 0.00121978 0.0005079 0.000420239 0.00253235\n35 0.0199811 0.0267965 0.0129649 0.00264194 0.000195136 -0.00349662 0.00294599 -0.00187851 0.00177767 -0.0053757 -0.00330811 -0.00295473 0.00208629 -6.97773e-5 -0.00153972 -0.000773065 -0.00157575 -0.000197057\n36 0.0175704 0.0191343 -0.0116551 0.00882917 -0.0104714 0.0103777 0.00118041 -0.000696881 0.00192364 0.00744034 0.00497109 -0.00164206 0.00162482 -0.00139405 0.00167977 0.000693101 -0.00132024 0.00297973\n37 -0.00462744 -0.013417 0.00735863 0.0138801 -0.0058212 -0.00238145 -0.00576575 0.00188503 0.00101854 0.0035232 0.0016009 0.00106877 -0.00593854 -0.0015165 -0.00563642 -0.000339869 0.00216456 0.002153\n38 -0.0218719 0.00531191 0.00305154 0.0241393 0.0234907 0.00316473 0.0020773 -0.00469298 -0.00845531 0.00456344 -0.000534739 0.00131404 -0.00166945 -0.000113877 -0.00168502 0.00333815 -0.00307554 0.00114466\n39 -0.00848638 0.0208304 0.00949937 0.0226454 0.0052942 -0.000851704 0.00632965 2.91971e-5 0.00329463 6.28469e-5 0.00660731 0.00235582 -0.00130279 -0.00141865 0.00530658 -0.00248136 0.000456183 0.00125713\n40 -0.0887529 -0.0108083 -0.00348235 -0.0197061 -0.00851786 -0.00490488 0.00159713 0.00351037 0.0148414 -0.00401737 0.00779929 0.00245023 -0.00253298 -0.000226246 -0.000206421 0.00510786 0.00148421 0.00186788\n41 0.00130006 0.00193007 -0.00297337 0.0070658 0.00888416 0.00665004 -0.013746 0.000961125 0.00363303 0.00316905 0.000576911 -0.00659932 0.00136165 0.0013939 -0.00380487 -0.00444913 0.00366095 0.00144111\n42 -0.0207553 0.0174796 -0.00445662 -0.0117613 0.0273261 -0.00065484 0.00296882 0.00593266 0.00162045 -0.00318673 0.0066341 -0.0053347 0.000440878 -0.000644585 -0.00244859 0.00184264 0.00345959 -0.000426283\n43 0.0413948 0.00307635 -0.00665062 -0.00226029 0.017443 -0.00424136 0.00950125 -0.00429922 0.00148225 -0.000166312 0.00294757 -0.00069645 0.000696539 0.000366659 0.00282844 -0.00230084 0.0053369 0.00238474\n44 0.00449575 0.0201137 0.03094 -0.0058886 -0.00146264 0.0101428 -0.00516029 0.00543426 -0.00941967 0.000969442 -0.000431407 0.0064443 0.00115545 -0.00181689 0.00364823 -0.000426309 0.000849352 -0.00167685\n45 -0.0205292 -0.00157548 0.013357 -0.00792343 0.00744915 0.00216668 -0.00243796 0.00180573 0.01512 0.00713893 -0.00283512 0.00430074 0.000788886 0.0049491 0.0029426 -0.00139686 0.00105337 -0.00239361\n46 -0.0215505 -0.0112917 0.013841 0.0111599 -0.0105729 0.00953035 0.0113897 -0.00673481 -0.0100248 0.00344613 0.00262901 0.0047878 0.00566946 -6.60172e-5 0.00414744 0.00111141 0.00450865 -0.00145945\n47 -0.0171993 0.0180146 0.00810394 -0.00791244 0.0061704 0.00923438 0.000727892 -0.0152243 0.00748635 -0.00599911 -0.00175649 0.00265434 -8.49398e-5 0.00305952 -0.00198115 0.00274446 -0.0028668 0.00323797\n48 0.0587549 0.0116068 -0.00915491 0.00448539 0.0104133 0.00457871 0.00126112 0.00499596 0.00964989 -0.00404286 0.000207311 0.003728 -0.000433589 -0.000303131 0.00412588 0.000467283 -0.000916261 -0.00103631\n49 -0.00166257 0.0250389 0.00797097 0.000683472 -0.000895449 -0.0133557 -0.00573426 0.000680622 0.00069621 0.00638431 -0.00245348 0.00498899 0.00507946 0.0057863 -0.00069408 0.0014596 0.000877213 -0.000692365\n50 -0.0355097 0.0143079 -0.00981991 0.00946907 -0.00422843 -0.00254884 0.00491884 0.00651818 -0.00548423 -0.0071809 9.81603e-5 0.00390103 -0.00712449 0.0013088 0.00694234 -0.00320143 0.000147409 0.00234526\n51 0.0456319 -0.0188437 0.00614929 0.01619 -0.0156405 0.00353768 -0.00911906 0.000874972 -0.00121217 -0.00403428 -0.000414905 0.00681573 0.00859836 0.00350106 -0.00263157 -0.00122084 0.00183226 0.00257702\n52 0.00746721 0.0133773 -0.0340613 -0.0139034 0.00655522 0.00929538 0.000770716 -0.000483502 -0.00600155 0.00201797 0.0011251 0.00179484 -2.38878e-5 0.00486216 0.00282832 0.00255029 0.00367921 0.00129338\n53 0.00823236 -0.00600734 -0.0200329 0.00202998 -0.0011313 0.0105144 0.00321895 0.00687414 0.000987698 0.00431901 0.000760463 -0.00635147 -0.00119575 0.00474285 4.40898e-5 0.00580837 -0.00332298 -0.00201341\n54 -0.043754 -0.00171994 -0.00111157 0.00123094 -0.00428039 0.0027972 0.00934907 -0.00596239 -0.00226019 0.001642 -0.00513074 -0.00589632 0.00344517 -0.0042949 0.0025378 0.00306413 0.00186166 0.00125999\n55 0.0430398 -0.000525733 0.0081576 -0.00839141 -0.00347855 -0.00933299 0.00251806 -0.0126012 0.002086 0.00272973 0.00204035 -0.000224255 -0.000607192 -0.000454776 -0.000157181 0.00250081 0.00145433 -0.00163108\n56 0.0305092 -0.00319322 -0.010629 0.0139009 0.00442941 0.00855659 0.00087527 -0.00330425 0.000399393 -0.000737765 -0.00150343 -0.00754475 0.000704529 0.00851631 0.00185909 -0.00126123 0.00232031 0.00223781\n57 0.00321453 -0.0190408 -0.0279848 0.00741802 -0.0157076 0.00592558 0.0020086 0.00843992 -0.00442316 0.00325392 -0.002545 -0.00268433 -0.00623548 -0.00142257 -0.00199612 0.0016597 0.000405685 -0.00229266\n58 0.0156328 -0.0074322 0.0066988 -0.0114629 -0.0168092 0.00328227 -0.00226964 -0.00110748 0.000440872 0.00227572 0.00827165 -0.00488151 -0.00316671 -2.58046e-5 0.00360288 0.00115025 0.00316887 -0.00204823\n59 -0.00151264 0.00426245 0.00115303 0.00338067 0.00957651 0.0116283 0.00361068 0.0102905 0.00246382 0.00700902 0.00252521 0.00257786 0.000578243 -0.00384276 -0.00597088 0.00283491 0.00171675 0.00226962\n─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n\nImportance of components:\n──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\n PC1 PC2 PC3 PC4 PC5 PC6 PC7 PC8 PC9 PC10 PC11 PC12 PC13 PC14 PC15 PC16 PC17 PC18\n──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────\nSS Loadings (Eigenvalues) 0.0559745 0.0192925 0.0128414 0.00672244 0.0055061 0.00364815 0.00229962 0.00223028 0.00206984 0.00135745 0.00119 0.000805397 0.000775895 0.000619591 0.00052072 0.000351929 0.000282879 0.000224033\nVariance explained 0.474806 0.16365 0.108928 0.0570235 0.0467058 0.0309456 0.0195066 0.0189185 0.0175575 0.0115146 0.0100942 0.00683182 0.00658157 0.00525572 0.00441704 0.00298526 0.00239954 0.00190038\nCumulative variance 0.474806 0.638456 0.747384 0.804407 0.851113 0.882059 0.901565 0.920484 0.938041 0.949556 0.95965 0.966482 0.973063 0.978319 0.982736 0.985721 0.988121 0.990021\nProportion explained 0.479592 0.165299 0.110026 0.0575982 0.0471765 0.0312575 0.0197032 0.0191092 0.0177345 0.0116307 0.010196 0.00690068 0.00664791 0.00530869 0.00446156 0.00301535 0.00242373 0.00191953\nCumulative proportion 0.479592 0.644891 0.754917 0.812515 0.859692 0.890949 0.910652 0.929761 0.947496 0.959127 0.969323 0.976223 0.982871 0.98818 0.992641 0.995657 0.99808 1.0\n──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"Now let’s show explained variance of each principal component.","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"plot(principalvars(fp), title=\"explained variance\", label=\"Tangent PCA\")","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"(Image: )","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"The next plot shows how projections on the first two pricipal components look like.","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"fig = plot(; title=\"coordinates per gesture of the first two principal components\")\nfor label_num in [0, 1]\n mask = hand_labels .== label_num\n cur_hand_logs = red_coords[:, mask]\n cur_t = MultivariateStats.transform(fp, cur_hand_logs)\n scatter!(fig, cur_t[1, :], cur_t[2, :], label=\"gesture \" * string(label_num))\nend\nxlabel!(fig, \"principal component 1\")\nylabel!(fig, \"principal component 2\")\nfig","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"(Image: )","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"The following heatmap displays pairwise distances between gestures. We can use them for clustering, classification, etc.","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"hand_distances = [\n distance(Mshape, hands_projected[i], hands_projected[j]) for\n i in eachindex(hands_projected), j in eachindex(hands_projected)\n]\nheatmap(hand_distances, aspect_ratio=:equal)","category":"page"},{"location":"tutorials/hand-gestures.html","page":"perform Hand gesture analysis","title":"perform Hand gesture analysis","text":"(Image: )","category":"page"},{"location":"features/statistics.html#Statistics","page":"Statistics","title":"Statistics","text":"","category":"section"},{"location":"features/statistics.html","page":"Statistics","title":"Statistics","text":"Modules = [Manifolds,ManifoldsBase]\nPages = [\"statistics.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"features/statistics.html#Manifolds.AbstractEstimationMethod","page":"Statistics","title":"Manifolds.AbstractEstimationMethod","text":"AbstractEstimationMethod\n\nAbstract type for defining statistical estimation methods.\n\n\n\n\n\n","category":"type"},{"location":"features/statistics.html#Manifolds.CyclicProximalPointEstimation","page":"Statistics","title":"Manifolds.CyclicProximalPointEstimation","text":"CyclicProximalPointEstimation <: AbstractEstimationMethod\n\nMethod for estimation using the cyclic proximal point technique.\n\n\n\n\n\n","category":"type"},{"location":"features/statistics.html#Manifolds.ExtrinsicEstimation","page":"Statistics","title":"Manifolds.ExtrinsicEstimation","text":"ExtrinsicEstimation <: AbstractEstimationMethod\n\nMethod for estimation in the ambient space and projecting to the manifold.\n\nFor mean estimation, GeodesicInterpolation is used for mean estimation in the ambient space.\n\n\n\n\n\n","category":"type"},{"location":"features/statistics.html#Manifolds.GeodesicInterpolation","page":"Statistics","title":"Manifolds.GeodesicInterpolation","text":"GeodesicInterpolation <: AbstractEstimationMethod\n\nRepeated weighted geodesic interpolation method for estimating the Riemannian center of mass.\n\nThe algorithm proceeds with the following simple online update:\n\nbeginaligned\nμ_1 = x_1\nt_k = fracw_ksum_i=1^k w_i\nμ_k = γ_μ_k-1(x_k t_k)\nendaligned\n\nwhere x_k are points, w_k are weights, μ_k is the kth estimate of the mean, and γ_x(y t) is the point at time t along the shortest_geodesic between points xy mathcal M. The algorithm terminates when all x_k have been considered. In the Euclidean case, this exactly computes the weighted mean.\n\nThe algorithm has been shown to converge asymptotically with the sample size for the following manifolds equipped with their default metrics when all sampled points are in an open geodesic ball about the mean with corresponding radius (see GeodesicInterpolationWithinRadius):\n\nAll simply connected complete Riemannian manifolds with non-positive sectional curvature at radius [CHSV16], in particular:\nEuclidean\nSymmetricPositiveDefinite [HCSV13]\nOther manifolds:\nSphere: fracπ2 [SCaO+15]\nGrassmann: fracπ4 [CV15]\nStiefel/Rotations: fracπ2 sqrt 2 [CV19]\n\nFor online variance computation, the algorithm additionally uses an analogous recursion to the weighted Welford algorithm [Wes79].\n\n\n\n\n\n","category":"type"},{"location":"features/statistics.html#Manifolds.GeodesicInterpolationWithinRadius","page":"Statistics","title":"Manifolds.GeodesicInterpolationWithinRadius","text":"GeodesicInterpolationWithinRadius{T} <: AbstractEstimationMethod\n\nEstimation of Riemannian center of mass using GeodesicInterpolation with fallback to GradientDescentEstimation if any points are outside of a geodesic ball of specified radius around the mean.\n\nConstructor\n\nGeodesicInterpolationWithinRadius(radius)\n\n\n\n\n\n","category":"type"},{"location":"features/statistics.html#Manifolds.GradientDescentEstimation","page":"Statistics","title":"Manifolds.GradientDescentEstimation","text":"GradientDescentEstimation <: AbstractEstimationMethod\n\nMethod for estimation using gradient descent.\n\n\n\n\n\n","category":"type"},{"location":"features/statistics.html#Manifolds.WeiszfeldEstimation","page":"Statistics","title":"Manifolds.WeiszfeldEstimation","text":"WeiszfeldEstimation <: AbstractEstimationMethod\n\nMethod for estimation using the Weiszfeld algorithm for the median\n\n\n\n\n\n","category":"type"},{"location":"features/statistics.html#Manifolds.default_estimation_method-Tuple{AbstractManifold, Any}","page":"Statistics","title":"Manifolds.default_estimation_method","text":"default_estimation_method(M::AbstractManifold, f)\n\nSpecify a default AbstractEstimationMethod for an AbstractManifold for a function f, e.g. the median or the mean.\n\nNote that his function is decorated, so it can inherit from the embedding, for example for the IsEmbeddedSubmanifold trait.\n\n\n\n\n\n","category":"method"},{"location":"features/statistics.html#Statistics.cov-Tuple{AbstractManifold, AbstractVector}","page":"Statistics","title":"Statistics.cov","text":"Statistics.cov(\n M::AbstractManifold,\n x::AbstractVector;\n basis::AbstractBasis=DefaultOrthonormalBasis(),\n tangent_space_covariance_estimator::CovarianceEstimator=SimpleCovariance(;\n corrected=true,\n ),\n mean_estimation_method::AbstractEstimationMethod=GradientDescentEstimation(),\n inverse_retraction_method::AbstractInverseRetractionMethod=default_inverse_retraction_method(\n M, eltype(x),\n ),\n)\n\nEstimate the covariance matrix of a set of points x on manifold M. Since the covariance matrix on a manifold is a rank 2 tensor, the function returns its coefficients in basis induced by the given tangent space basis. See Section 5 of [Pen06] for details.\n\nThe mean is calculated using the specified mean_estimation_method using [mean](@ref Statistics.mean(::AbstractManifold, ::AbstractVector, ::AbstractEstimationMethod), and tangent vectors at this mean are calculated using the provided inverse_retraction_method. Finally, the covariance matrix in the tangent plane is estimated using the Euclidean space estimator tangent_space_covariance_estimator. The type CovarianceEstimator is defined in StatsBase.jl and examples of covariance estimation methods can be found in CovarianceEstimation.jl.\n\n\n\n\n\n","category":"method"},{"location":"features/statistics.html#Statistics.mean!-Tuple{AbstractManifold, Vararg{Any}}","page":"Statistics","title":"Statistics.mean!","text":"mean!(M::AbstractManifold, y, x::AbstractVector[, w::AbstractWeights]; kwargs...)\nmean!(\n M::AbstractManifold,\n y,\n x::AbstractVector,\n [w::AbstractWeights,]\n method::AbstractEstimationMethod;\n kwargs...,\n)\n\nCompute the mean in-place in y.\n\n\n\n\n\n","category":"method"},{"location":"features/statistics.html#Statistics.mean-Tuple{AbstractManifold, AbstractVector, AbstractVector, ExtrinsicEstimation}","page":"Statistics","title":"Statistics.mean","text":"mean(\n M::AbstractManifold,\n x::AbstractVector,\n [w::AbstractWeights,]\n method::ExtrinsicEstimation;\n kwargs...,\n)\n\nEstimate the Riemannian center of mass of x using ExtrinsicEstimation, i.e. by computing the mean in the embedding and projecting the result back. You can specify an extrinsic_method to specify which mean estimation method to use in the embedding, which defaults to GeodesicInterpolation.\n\nSee mean for a description of the remaining kwargs.\n\n\n\n\n\n","category":"method"},{"location":"features/statistics.html#Statistics.mean-Tuple{AbstractManifold, AbstractVector, AbstractVector, GeodesicInterpolationWithinRadius}","page":"Statistics","title":"Statistics.mean","text":"mean(\n M::AbstractManifold,\n x::AbstractVector,\n [w::AbstractWeights,]\n method::GeodesicInterpolationWithinRadius;\n kwargs...,\n)\n\nEstimate the Riemannian center of mass of x using GeodesicInterpolationWithinRadius.\n\nSee mean for a description of kwargs.\n\n\n\n\n\n","category":"method"},{"location":"features/statistics.html#Statistics.mean-Tuple{AbstractManifold, AbstractVector, AbstractVector, GeodesicInterpolation}","page":"Statistics","title":"Statistics.mean","text":"mean(\n M::AbstractManifold,\n x::AbstractVector,\n [w::AbstractWeights,]\n method::GeodesicInterpolation;\n shuffle_rng=nothing,\n retraction::AbstractRetractionMethod = default_retraction_method(M, eltype(x)),\n inverse_retraction::AbstractInverseRetractionMethod = default_inverse_retraction_method(M, eltype(x)),\n kwargs...,\n)\n\nEstimate the Riemannian center of mass of x in an online fashion using repeated weighted geodesic interpolation. See GeodesicInterpolation for details.\n\nIf shuffle_rng is provided, it is used to shuffle the order in which the points are considered for computing the mean.\n\nOptionally, pass retraction and inverse_retraction method types to specify the (inverse) retraction.\n\n\n\n\n\n","category":"method"},{"location":"features/statistics.html#Statistics.mean-Tuple{AbstractManifold, Vararg{Any}}","page":"Statistics","title":"Statistics.mean","text":"mean(M::AbstractManifold, x::AbstractVector[, w::AbstractWeights]; kwargs...)\n\nCompute the (optionally weighted) Riemannian center of mass also known as Karcher mean of the vector x of points on the AbstractManifold M, defined as the point that satisfies the minimizer\n\nargmin_y mathcal M frac12 sum_i=1^n w_i sum_i=1^n w_imathrmd_mathcal M^2(yx_i)\n\nwhere mathrmd_mathcal M denotes the Riemannian distance.\n\nIn the general case, the GradientDescentEstimation is used to compute the mean. mean( M::AbstractManifold, x::AbstractVector, [w::AbstractWeights,] method::AbstractEstimationMethod=defaultestimationmethod(M); kwargs..., )\n\nCompute the mean using the specified method.\n\nmean(\n M::AbstractManifold,\n x::AbstractVector,\n [w::AbstractWeights,]\n method::GradientDescentEstimation;\n p0=x[1],\n stop_iter=100,\n retraction::AbstractRetractionMethod = default_retraction_method(M),\n inverse_retraction::AbstractInverseRetractionMethod = default_retraction_method(M, eltype(x)),\n kwargs...,\n)\n\nCompute the mean using the gradient descent scheme GradientDescentEstimation.\n\nOptionally, provide p0, the starting point (by default set to the first data point). stop_iter denotes the maximal number of iterations to perform and the kwargs... are passed to isapprox to stop, when the minimal change between two iterates is small. For more stopping criteria check the Manopt.jl package and use a solver therefrom.\n\nOptionally, pass retraction and inverse_retraction method types to specify the (inverse) retraction.\n\nThe Theory stems from [Kar77] and is also described in [PA12] as the exponential barycenter. The algorithm is further described in[ATV13].\n\n\n\n\n\n","category":"method"},{"location":"features/statistics.html#Statistics.median!-Tuple{AbstractManifold, Vararg{Any}}","page":"Statistics","title":"Statistics.median!","text":"median!(M::AbstractManifold, y, x::AbstractVector[, w::AbstractWeights]; kwargs...)\nmedian!(\n M::AbstractManifold,\n y,\n x::AbstractVector,\n [w::AbstractWeights,]\n method::AbstractEstimationMethod;\n kwargs...,\n)\n\ncomputes the median in-place in y.\n\n\n\n\n\n","category":"method"},{"location":"features/statistics.html#Statistics.median-Tuple{AbstractManifold, AbstractVector, AbstractVector, CyclicProximalPointEstimation}","page":"Statistics","title":"Statistics.median","text":"median(\n M::AbstractManifold,\n x::AbstractVector,\n [w::AbstractWeights,]\n method::CyclicProximalPointEstimation;\n p0=x[1],\n stop_iter=1000000,\n retraction::AbstractRetractionMethod = default_retraction_method(M, eltype(x),),\n inverse_retraction::AbstractInverseRetractionMethod = default_inverse_retraction_method(M, eltype(x),),\n kwargs...,\n)\n\nCompute the median using CyclicProximalPointEstimation.\n\nOptionally, provide p0, the starting point (by default set to the first data point). stop_iter denotes the maximal number of iterations to perform and the kwargs... are passed to isapprox to stop, when the minimal change between two iterates is small. For more stopping criteria check the Manopt.jl package and use a solver therefrom.\n\nOptionally, pass retraction and inverse_retraction method types to specify the (inverse) retraction.\n\nThe algorithm is further described in [Bac14].\n\n\n\n\n\n","category":"method"},{"location":"features/statistics.html#Statistics.median-Tuple{AbstractManifold, AbstractVector, AbstractVector, ExtrinsicEstimation}","page":"Statistics","title":"Statistics.median","text":"median(\n M::AbstractManifold,\n x::AbstractVector,\n [w::AbstractWeights,]\n method::ExtrinsicEstimation;\n extrinsic_method = CyclicProximalPointEstimation(),\n kwargs...,\n)\n\nEstimate the median of x using ExtrinsicEstimation, i.e. by computing the median in the embedding and projecting the result back. You can specify an extrinsic_method to specify which median estimation method to use in the embedding, which defaults to CyclicProximalPointEstimation.\n\nSee median for a description of kwargs.\n\n\n\n\n\n","category":"method"},{"location":"features/statistics.html#Statistics.median-Tuple{AbstractManifold, AbstractVector, AbstractVector, Manifolds.WeiszfeldEstimation}","page":"Statistics","title":"Statistics.median","text":"median(\n M::AbstractManifold,\n x::AbstractVector,\n [w::AbstractWeights,]\n method::WeiszfeldEstimation;\n α = 1.0,\n p0=x[1],\n stop_iter=2000,\n retraction::AbstractRetractionMethod = default_retraction_method(M, eltype(x)),\n inverse_retraction::AbstractInverseRetractionMethod = default_inverse_retraction_method(M, eltype(x)),\n kwargs...,\n)\n\nCompute the median using WeiszfeldEstimation.\n\nOptionally, provide p0, the starting point (by default set to the first data point). stop_iter denotes the maximal number of iterations to perform and the kwargs... are passed to isapprox to stop, when the minimal change between two iterates is small. For more stopping criteria check the Manopt.jl package and use a solver therefrom.\n\nThe parameter αin (02 is a step size.\n\nThe algorithm is further described in [FVJ08], especially the update rule in Eq. (6), i.e. Let q_k denote the current iterate, n the number of points x_1ldotsx_n, and\n\nI_k = bigl i in 1ldotsn big x_i neq q_k bigr\n\nall indices of points that are not equal to the current iterate. Then the update reads q_k+1 = exp_q_k(αX), where\n\nX = frac1ssum_iin I_k fracw_id_mathcal M(q_kx_i)log_q_kx_i\nquad\ntext with \nquad\ns = sum_iin I_k fracw_id_mathcal M(q_kx_i)\n\nand where mathrmd_mathcal M denotes the Riemannian distance.\n\nOptionally, pass retraction and inverse_retraction method types to specify the (inverse) retraction, which by default use the exponential and logarithmic map, respectively.\n\n\n\n\n\n","category":"method"},{"location":"features/statistics.html#Statistics.median-Tuple{AbstractManifold, Vararg{Any}}","page":"Statistics","title":"Statistics.median","text":"median(M::AbstractManifold, x::AbstractVector[, w::AbstractWeights]; kwargs...)\nmedian(\n M::AbstractManifold,\n x::AbstractVector,\n [w::AbstractWeights,]\n method::AbstractEstimationMethod;\n kwargs...,\n)\n\nCompute the (optionally weighted) Riemannian median of the vector x of points on the AbstractManifold M, defined as the point that satisfies the minimizer\n\nargmin_y mathcal M frac1sum_i=1^n w_i sum_i=1^n w_imathrmd_mathcal M(yx_i)\n\nwhere mathrmd_mathcal M denotes the Riemannian distance. This function is nonsmooth (i.e nondifferentiable).\n\nIn the general case, the CyclicProximalPointEstimation is used to compute the median. However, this default may be overloaded for specific manifolds.\n\nCompute the median using the specified method.\n\n\n\n\n\n","category":"method"},{"location":"features/statistics.html#Statistics.std-Tuple{AbstractManifold, Vararg{Any}}","page":"Statistics","title":"Statistics.std","text":"std(M, x, m=mean(M, x); corrected=true, kwargs...)\nstd(M, x, w::AbstractWeights, m=mean(M, x, w); corrected=false, kwargs...)\n\ncompute the optionally weighted standard deviation of a Vector x of n data points on the AbstractManifold M, i.e.\n\nsqrtfrac1c sum_i=1^n w_i d_mathcal M^2 (x_im)\n\nwhere c is a correction term, see Statistics.std. The mean of x can be specified as m, and the corrected variance can be activated by setting corrected=true.\n\n\n\n\n\n","category":"method"},{"location":"features/statistics.html#Statistics.var-Tuple{AbstractManifold, Any}","page":"Statistics","title":"Statistics.var","text":"var(M, x, m=mean(M, x); corrected=true)\nvar(M, x, w::AbstractWeights, m=mean(M, x, w); corrected=false)\n\ncompute the (optionally weighted) variance of a Vector x of n data points on the AbstractManifold M, i.e.\n\nfrac1c sum_i=1^n w_i d_mathcal M^2 (x_im)\n\nwhere c is a correction term, see Statistics.var. The mean of x can be specified as m, and the corrected variance can be activated by setting corrected=true. All further kwargs... are passed to the computation of the mean (if that is not provided).\n\n\n\n\n\n","category":"method"},{"location":"features/statistics.html#StatsBase.kurtosis-Tuple{AbstractManifold, AbstractVector, StatsBase.AbstractWeights}","page":"Statistics","title":"StatsBase.kurtosis","text":"kurtosis(M::AbstractManifold, x::AbstractVector, k::Int[, w::AbstractWeights], m=mean(M, x[, w]))\n\nCompute the excess kurtosis of points in x on manifold M. Optionally provide weights w and/or a precomputed mean m.\n\n\n\n\n\n","category":"method"},{"location":"features/statistics.html#StatsBase.mean_and_std-Tuple{AbstractManifold, Vararg{Any}}","page":"Statistics","title":"StatsBase.mean_and_std","text":"mean_and_std(M::AbstractManifold, x::AbstractVector[, w::AbstractWeights]; kwargs...) -> (mean, std)\n\nCompute the mean and the standard deviation std simultaneously.\n\nmean_and_std(\n M::AbstractManifold,\n x::AbstractVector\n [w::AbstractWeights,]\n method::AbstractEstimationMethod;\n kwargs...,\n) -> (mean, var)\n\nUse the method for simultaneously computing the mean and standard deviation. To use a mean-specific method, call mean and then std.\n\n\n\n\n\n","category":"method"},{"location":"features/statistics.html#StatsBase.mean_and_var-Tuple{AbstractManifold, AbstractVector, StatsBase.AbstractWeights, GeodesicInterpolationWithinRadius}","page":"Statistics","title":"StatsBase.mean_and_var","text":"mean_and_var(\n M::AbstractManifold,\n x::AbstractVector\n [w::AbstractWeights,]\n method::GeodesicInterpolationWithinRadius;\n kwargs...,\n) -> (mean, var)\n\nUse repeated weighted geodesic interpolation to estimate the mean. Simultaneously, use a Welford-like recursion to estimate the variance.\n\nSee GeodesicInterpolationWithinRadius and mean_and_var for more information.\n\n\n\n\n\n","category":"method"},{"location":"features/statistics.html#StatsBase.mean_and_var-Tuple{AbstractManifold, AbstractVector, StatsBase.AbstractWeights, GeodesicInterpolation}","page":"Statistics","title":"StatsBase.mean_and_var","text":"mean_and_var(\n M::AbstractManifold,\n x::AbstractVector\n [w::AbstractWeights,]\n method::GeodesicInterpolation;\n shuffle_rng::Union{AbstractRNG,Nothing} = nothing,\n retraction::AbstractRetractionMethod = default_retraction_method(M, eltype(x)),\n inverse_retraction::AbstractInverseRetractionMethod = default_inverse_retraction_method(M, eltype(x)),\n kwargs...,\n) -> (mean, var)\n\nUse the repeated weighted geodesic interpolation to estimate the mean. Simultaneously, use a Welford-like recursion to estimate the variance.\n\nIf shuffle_rng is provided, it is used to shuffle the order in which the points are considered. Optionally, pass retraction and inverse_retraction method types to specify the (inverse) retraction.\n\nSee GeodesicInterpolation for details on the geodesic interpolation method.\n\nnote: Note\nThe Welford algorithm for the variance is experimental and is not guaranteed to give accurate results except on Euclidean.\n\n\n\n\n\n","category":"method"},{"location":"features/statistics.html#StatsBase.mean_and_var-Tuple{AbstractManifold, Vararg{Any}}","page":"Statistics","title":"StatsBase.mean_and_var","text":"mean_and_var(M::AbstractManifold, x::AbstractVector[, w::AbstractWeights]; kwargs...) -> (mean, var)\n\nCompute the mean and the variance simultaneously. See those functions for a description of the arguments.\n\nmean_and_var(\n M::AbstractManifold,\n x::AbstractVector\n [w::AbstractWeights,]\n method::AbstractEstimationMethod;\n kwargs...,\n) -> (mean, var)\n\nUse the method for simultaneously computing the mean and variance. To use a mean-specific method, call mean and then var.\n\n\n\n\n\n","category":"method"},{"location":"features/statistics.html#StatsBase.moment","page":"Statistics","title":"StatsBase.moment","text":"moment(M::AbstractManifold, x::AbstractVector, k::Int[, w::AbstractWeights], m=mean(M, x[, w]))\n\nCompute the kth central moment of points in x on manifold M. Optionally provide weights w and/or a precomputed mean.\n\n\n\n\n\n","category":"function"},{"location":"features/statistics.html#StatsBase.skewness-Tuple{AbstractManifold, AbstractVector, StatsBase.AbstractWeights}","page":"Statistics","title":"StatsBase.skewness","text":"skewness(M::AbstractManifold, x::AbstractVector, k::Int[, w::AbstractWeights], m=mean(M, x[, w]))\n\nCompute the standardized skewness of points in x on manifold M. Optionally provide weights w and/or a precomputed mean m.\n\n\n\n\n\n","category":"method"},{"location":"features/statistics.html#Literature","page":"Statistics","title":"Literature","text":"","category":"section"},{"location":"features/statistics.html","page":"Statistics","title":"Statistics","text":"
    [ATV13]
    \n
    \n
    B. Afsari, R. Tron and R. Vidal. On the Convergence of Gradient Descent for Finding the Riemannian Center of Mass. SIAM Journal on Control and Optimization 51, 2230–2260 (2013), arXiv:1201.0925.
    \n
    [Bac14]
    \n
    \n
    M. Bačák. Computing medians and means in Hadamard spaces. SIAM Journal on Optimization 24, 1542–1566 (2014), arXiv:1210.2145, arXiv: [1210.2145](https://arxiv.org/abs/1210.2145).
    \n
    [CV15]
    \n
    \n
    R. Chakraborty and B. C. Vemuri. Recursive Fréchet Mean Computation on the Grassmannian and Its Applications to Computer Vision. In: 2015 IEEE International Conference on Computer Vision (ICCV) (2015).
    \n
    [CV19]
    \n
    \n
    R. Chakraborty and B. C. Vemuri. Statistics on the Stiefel manifold: Theory and applications. The Annals of Statistics 47 (2019), arXiv:1708.00045.
    \n
    [CHSV16]
    \n
    \n
    G. Cheng, J. Ho, H. Salehian and B. C. Vemuri. Recursive Computation of the Fréchet Mean on Non-positively Curved Riemannian Manifolds with Applications. In: Riemannian Computing in Computer Vision, editors, 21–43. Springer, Cham (2016).
    \n
    [FVJ08]
    \n
    \n
    P. T. Fletcher, S. Venkatasubramanian and S. Joshi. Robust statistics on Riemannian manifolds via the geometric median. In: 2008 IEEE Conference on Computer Vision and Pattern Recognition (2008).
    \n
    [HCSV13]
    \n
    \n
    J. Ho, G. Cheng, H. Salehian and B. C. Vemuri. Recursive Karcher expectation estimators and geometric law of large numbers. In: 16th International Conference on Artificial Intelligence and Statistics (2013).
    \n
    [Kar77]
    \n
    \n
    H. Karcher. Riemannian center of mass and mollifier smoothing. Communications on Pure and Applied Mathematics 30, 509–541 (1977).
    \n
    [Pen06]
    \n
    \n
    X. Pennec. Intrinsic Statistics on Riemannian Manifolds: Basic Tools for Geometric Measurements. Journal of Mathematical Imaging and Vision 25, 127–154 (2006).
    \n
    [PA12]
    \n
    \n
    X. Pennec and V. Arsigny. Exponential Barycenters of the Canonical Cartan Connection and Invariant Means on Lie Groups. In: Matrix Information Geometry, editors, 123–166. Springer, Berlin, Heidelberg (2012), arXiv:00699361.
    \n
    [SCaO+15]
    \n
    \n
    H. Salehian, R. Chakraborty, E. and Ofori, D. Vaillancourt and B. C. Vemuri. An efficient recursive estimator of the Fréchet mean on hypersphere with applications to Medical Image Analysis. In: 5th MICCAI workshop on Mathematical Foundations of Computational Anatomy (2015).
    \n
    [Wes79]
    \n
    \n
    D. H. West. Updating mean and variance estimates. Communications of the ACM 22, 532–535 (1979).
    \n
    \n
    ","category":"page"},{"location":"manifolds/spectrahedron.html#Spectrahedron","page":"Spectrahedron","title":"Spectrahedron","text":"","category":"section"},{"location":"manifolds/spectrahedron.html","page":"Spectrahedron","title":"Spectrahedron","text":"Modules = [Manifolds]\nPages = [\"manifolds/Spectrahedron.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/spectrahedron.html#Manifolds.Spectrahedron","page":"Spectrahedron","title":"Manifolds.Spectrahedron","text":"Spectrahedron{N,K} <: AbstractDecoratorManifold{ℝ}\n\nThe Spectrahedron manifold, also known as the set of correlation matrices (symmetric positive semidefinite matrices) of rank k with unit trace.\n\nbeginaligned\nmathcal S(nk) =\nbiglp ℝ^n n big a^mathrmTpa geq 0 text for all a ℝ^n\noperatornametr(p) = sum_i=1^n p_ii = 1\ntextand p = qq^mathrmT text for q in ℝ^n k\ntext with operatornamerank(p) = operatornamerank(q) = k\nbigr\nendaligned\n\nThis manifold is working solely on the matrices q. Note that this q is not unique, indeed for any orthogonal matrix A we have (qA)(qA)^mathrmT = qq^mathrmT = p, so the manifold implemented here is the quotient manifold. The unit trace translates to unit frobenius norm of q.\n\nThe tangent space at p, denoted T_pmathcal E(nk), is also represented by matrices Yin ℝ^n k and reads as\n\nT_pmathcal S(nk) = bigl\nX ℝ^n nX = qY^mathrmT + Yq^mathrmT\ntext with operatornametr(X) = sum_i=1^nX_ii = 0\nbigr\n\nendowed with the Euclidean metric from the embedding, i.e. from the ℝ^n k\n\nThis manifold was for example investigated in [JBAS10].\n\nConstructor\n\nSpectrahedron(n,k)\n\ngenerates the manifold mathcal S(nk) subset ℝ^n n.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/spectrahedron.html#ManifoldsBase.check_point-Union{Tuple{K}, Tuple{N}, Tuple{Spectrahedron{N, K}, Any}} where {N, K}","page":"Spectrahedron","title":"ManifoldsBase.check_point","text":"check_point(M::Spectrahedron, q; kwargs...)\n\nchecks, whether q is a valid reprsentation of a point p=qq^mathrmT on the Spectrahedron M, i.e. is a matrix of size (N,K), such that p is symmetric positive semidefinite and has unit trace, i.e. q has to have unit frobenius norm. Since by construction p is symmetric, this is not explicitly checked. Since p is by construction positive semidefinite, this is not checked. The tolerances for positive semidefiniteness and unit trace can be set using the kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/spectrahedron.html#ManifoldsBase.check_vector-Union{Tuple{K}, Tuple{N}, Tuple{Spectrahedron{N, K}, Any, Any}} where {N, K}","page":"Spectrahedron","title":"ManifoldsBase.check_vector","text":"check_vector(M::Spectrahedron, q, Y; kwargs...)\n\nCheck whether X = qY^mathrmT + Yq^mathrmT is a tangent vector to p=qq^mathrmT on the Spectrahedron M, i.e. atfer check_point of q, Y has to be of same dimension as q and a X has to be a symmetric matrix with trace. The tolerance for the base point check and zero diagonal can be set using the kwargs.... Note that symmetry of X holds by construction and is not explicitly checked.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/spectrahedron.html#ManifoldsBase.is_flat-Tuple{Spectrahedron}","page":"Spectrahedron","title":"ManifoldsBase.is_flat","text":"is_flat(::Spectrahedron)\n\nReturn false. Spectrahedron is not a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/spectrahedron.html#ManifoldsBase.manifold_dimension-Union{Tuple{Spectrahedron{N, K}}, Tuple{K}, Tuple{N}} where {N, K}","page":"Spectrahedron","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::Spectrahedron)\n\nreturns the dimension of Spectrahedron M=mathcal S(nk) nk ℕ, i.e.\n\ndim mathcal S(nk) = nk - 1 - frack(k-1)2\n\n\n\n\n\n","category":"method"},{"location":"manifolds/spectrahedron.html#ManifoldsBase.project-Tuple{Spectrahedron, Any}","page":"Spectrahedron","title":"ManifoldsBase.project","text":"project(M::Spectrahedron, q)\n\nproject q onto the manifold Spectrahedron M, by normalizing w.r.t. the Frobenius norm\n\n\n\n\n\n","category":"method"},{"location":"manifolds/spectrahedron.html#ManifoldsBase.project-Tuple{Spectrahedron, Vararg{Any}}","page":"Spectrahedron","title":"ManifoldsBase.project","text":"project(M::Spectrahedron, q, Y)\n\nProject Y onto the tangent space at q, i.e. row-wise onto the Spectrahedron manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/spectrahedron.html#ManifoldsBase.representation_size-Union{Tuple{Spectrahedron{N, K}}, Tuple{K}, Tuple{N}} where {N, K}","page":"Spectrahedron","title":"ManifoldsBase.representation_size","text":"representation_size(M::Spectrahedron)\n\nReturn the size of an array representing an element on the Spectrahedron manifold M, i.e. n k, the size of such factor of p=qq^mathrmT on mathcal M = mathcal S(nk).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/spectrahedron.html#ManifoldsBase.retract-Tuple{Spectrahedron, Any, Any, ProjectionRetraction}","page":"Spectrahedron","title":"ManifoldsBase.retract","text":"retract(M::Spectrahedron, q, Y, ::ProjectionRetraction)\n\ncompute a projection based retraction by projecting q+Y back onto the manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/spectrahedron.html#ManifoldsBase.vector_transport_to-Tuple{Spectrahedron, Any, Any, Any, ProjectionTransport}","page":"Spectrahedron","title":"ManifoldsBase.vector_transport_to","text":"vector_transport_to(M::Spectrahedron, p, X, q)\n\ntransport the tangent vector X at p to q by projecting it onto the tangent space at q.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/spectrahedron.html#ManifoldsBase.zero_vector-Tuple{Spectrahedron, Vararg{Any}}","page":"Spectrahedron","title":"ManifoldsBase.zero_vector","text":"zero_vector(M::Spectrahedron,p)\n\nreturns the zero tangent vector in the tangent space of the symmetric positive definite matrix p on the Spectrahedron manifold M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/spectrahedron.html#Literature","page":"Spectrahedron","title":"Literature","text":"","category":"section"},{"location":"manifolds/choleskyspace.html#Cholesky-space","page":"Cholesky space","title":"Cholesky space","text":"","category":"section"},{"location":"manifolds/choleskyspace.html","page":"Cholesky space","title":"Cholesky space","text":"The Cholesky space is a Riemannian manifold on the lower triangular matrices. Its metric is based on the cholesky decomposition. The CholeskySpace is used to define the LogCholeskyMetric on the manifold of SymmetricPositiveDefinite matrices.","category":"page"},{"location":"manifolds/choleskyspace.html","page":"Cholesky space","title":"Cholesky space","text":"Modules = [Manifolds]\nPages = [\"manifolds/CholeskySpace.jl\"]\nOrder = [:type]","category":"page"},{"location":"manifolds/choleskyspace.html#Manifolds.CholeskySpace","page":"Cholesky space","title":"Manifolds.CholeskySpace","text":"CholeskySpace{N} <: AbstractManifold{ℝ}\n\nThe manifold of lower triangular matrices with positive diagonal and a metric based on the cholesky decomposition. The formulae for this manifold are for example summarized in Table 1 of [Lin19].\n\nConstructor\n\nCholeskySpace(n)\n\nGenerate the manifold of n n lower triangular matrices with positive diagonal.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/choleskyspace.html","page":"Cholesky space","title":"Cholesky space","text":"Modules = [Manifolds]\nPages = [\"manifolds/CholeskySpace.jl\"]\nOrder = [:function]","category":"page"},{"location":"manifolds/choleskyspace.html#Base.exp-Tuple{CholeskySpace, Vararg{Any}}","page":"Cholesky space","title":"Base.exp","text":"exp(M::CholeskySpace, p, X)\n\nCompute the exponential map on the CholeskySpace M emanating from the lower triangular matrix with positive diagonal p towards the lower triangular matrix X The formula reads\n\nexp_p X = p + X + operatornamediag(p)\noperatornamediag(p)expbigl( operatornamediag(X)operatornamediag(p)^-1bigr)\n\nwhere cdot denotes the strictly lower triangular matrix, and operatornamediag extracts the diagonal matrix.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/choleskyspace.html#Base.log-Tuple{LinearAlgebra.Cholesky, Vararg{Any}}","page":"Cholesky space","title":"Base.log","text":"log(M::CholeskySpace, X, p, q)\n\nCompute the logarithmic map on the CholeskySpace M for the geodesic emanating from the lower triangular matrix with positive diagonal p towards q. The formula reads\n\nlog_p q = p - q + operatornamediag(p)logbigl(operatornamediag(q)operatornamediag(p)^-1bigr)\n\nwhere cdot denotes the strictly lower triangular matrix, and operatornamediag extracts the diagonal matrix.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/choleskyspace.html#ManifoldsBase.check_point-Tuple{CholeskySpace, Any}","page":"Cholesky space","title":"ManifoldsBase.check_point","text":"check_point(M::CholeskySpace, p; kwargs...)\n\nCheck whether the matrix p lies on the CholeskySpace M, i.e. it's size fits the manifold, it is a lower triangular matrix and has positive entries on the diagonal. The tolerance for the tests can be set using the kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/choleskyspace.html#ManifoldsBase.check_vector-Tuple{CholeskySpace, Any, Any}","page":"Cholesky space","title":"ManifoldsBase.check_vector","text":"check_vector(M::CholeskySpace, p, X; kwargs... )\n\nCheck whether v is a tangent vector to p on the CholeskySpace M, i.e. after check_point(M,p), X has to have the same dimension as p and a symmetric matrix. The tolerance for the tests can be set using the kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/choleskyspace.html#ManifoldsBase.distance-Tuple{CholeskySpace, Any, Any}","page":"Cholesky space","title":"ManifoldsBase.distance","text":"distance(M::CholeskySpace, p, q)\n\nCompute the Riemannian distance on the CholeskySpace M between two matrices p, q that are lower triangular with positive diagonal. The formula reads\n\nd_mathcal M(pq) = sqrtsum_ij (p_ij-q_ij)^2 +\nsum_j=1^m (log p_jj - log q_jj)^2\n\n\n\n\n\n\n","category":"method"},{"location":"manifolds/choleskyspace.html#ManifoldsBase.inner-Tuple{CholeskySpace, Any, Any, Any}","page":"Cholesky space","title":"ManifoldsBase.inner","text":"inner(M::CholeskySpace, p, X, Y)\n\nCompute the inner product on the CholeskySpace M at the lower triangular matric with positive diagonal p and the two tangent vectors X,Y, i.e they are both lower triangular matrices with arbitrary diagonal. The formula reads\n\ng_p(XY) = sum_ij X_ijY_ij + sum_j=1^m X_iiY_iip_ii^-2\n\n\n\n\n\n","category":"method"},{"location":"manifolds/choleskyspace.html#ManifoldsBase.is_flat-Tuple{CholeskySpace}","page":"Cholesky space","title":"ManifoldsBase.is_flat","text":"is_flat(::CholeskySpace)\n\nReturn false. CholeskySpace is not a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/choleskyspace.html#ManifoldsBase.manifold_dimension-Union{Tuple{CholeskySpace{N}}, Tuple{N}} where N","page":"Cholesky space","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::CholeskySpace)\n\nReturn the manifold dimension for the CholeskySpace M, i.e.\n\n dim(mathcal M) = fracN(N+1)2\n\n\n\n\n\n","category":"method"},{"location":"manifolds/choleskyspace.html#ManifoldsBase.parallel_transport_to-Tuple{CholeskySpace, Any, Any, Any}","page":"Cholesky space","title":"ManifoldsBase.parallel_transport_to","text":"parallel_transport_to(M::CholeskySpace, p, X, q)\n\nParallely transport the tangent vector X at p along the geodesic to q on the CholeskySpace manifold M. The formula reads\n\nmathcal P_qp(X) = X \n+ operatornamediag(q)operatornamediag(p)^-1operatornamediag(X)\n\nwhere cdot denotes the strictly lower triangular matrix, and operatornamediag extracts the diagonal matrix.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/choleskyspace.html#ManifoldsBase.representation_size-Union{Tuple{CholeskySpace{N}}, Tuple{N}} where N","page":"Cholesky space","title":"ManifoldsBase.representation_size","text":"representation_size(M::CholeskySpace)\n\nReturn the representation size for the CholeskySpace{N} M, i.e. (N,N).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/choleskyspace.html#ManifoldsBase.zero_vector-Tuple{CholeskySpace, Vararg{Any}}","page":"Cholesky space","title":"ManifoldsBase.zero_vector","text":"zero_vector(M::CholeskySpace, p)\n\nReturn the zero tangent vector on the CholeskySpace M at p.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/choleskyspace.html#Literature","page":"Cholesky space","title":"Literature","text":"","category":"section"},{"location":"features/utilities.html#Ease-of-notation","page":"Utilities","title":"Ease of notation","text":"","category":"section"},{"location":"features/utilities.html","page":"Utilities","title":"Utilities","text":"The following terms introduce a nicer notation for some operations, for example using the ∈ operator, p mathcal M, to determine whether p is a point on the AbstractManifold mathcal M.","category":"page"},{"location":"features/utilities.html","page":"Utilities","title":"Utilities","text":"in\nTangentSpace","category":"page"},{"location":"features/utilities.html#Base.in","page":"Utilities","title":"Base.in","text":"Base.in(p, M::AbstractManifold; kwargs...)\np ∈ M\n\nCheck, whether a point p is a valid point (i.e. in) a AbstractManifold M. This method employs is_point deactivating the error throwing option.\n\n\n\n\n\nBase.in(p, TpM::TangentSpaceAtPoint; kwargs...)\nX ∈ TangentSpaceAtPoint(M,p)\n\nCheck whether X is a tangent vector from (in) the tangent space T_pmathcal M, i.e. the TangentSpaceAtPoint at p on the AbstractManifold M. This method uses is_vector deactivating the error throw option.\n\n\n\n\n\n","category":"function"},{"location":"features/utilities.html#ManifoldsBase.TangentSpace","page":"Utilities","title":"ManifoldsBase.TangentSpace","text":"TangentSpace(M::AbstractManifold, p)\n\nReturn a TangentSpaceAtPoint representing tangent space at p on the AbstractManifold M.\n\n\n\n\n\n","category":"constant"},{"location":"features/utilities.html#Fallback-for-the-exponential-map:-Solving-the-corresponding-ODE","page":"Utilities","title":"Fallback for the exponential map: Solving the corresponding ODE","text":"","category":"section"},{"location":"features/utilities.html","page":"Utilities","title":"Utilities","text":"When additionally loading NLSolve.jl the following fallback for the exponential map is available.","category":"page"},{"location":"features/utilities.html","page":"Utilities","title":"Utilities","text":"Modules = [Manifolds]\nPages = [\"nlsolve.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"features/utilities.html#Public-documentation","page":"Utilities","title":"Public documentation","text":"","category":"section"},{"location":"features/utilities.html","page":"Utilities","title":"Utilities","text":"The following functions are of interest for extending and using the ProductManifold.","category":"page"},{"location":"features/utilities.html","page":"Utilities","title":"Utilities","text":"submanifold_component\nsubmanifold_components\nProductRepr","category":"page"},{"location":"features/utilities.html#Manifolds.submanifold_component","page":"Utilities","title":"Manifolds.submanifold_component","text":"submanifold_component(M::AbstractManifold, p, i::Integer)\nsubmanifold_component(M::AbstractManifold, p, ::Val(i)) where {i}\nsubmanifold_component(p, i::Integer)\nsubmanifold_component(p, ::Val(i)) where {i}\n\nProject the product array p on M to its ith component. A new array is returned.\n\n\n\n\n\n","category":"function"},{"location":"features/utilities.html#Manifolds.submanifold_components","page":"Utilities","title":"Manifolds.submanifold_components","text":"submanifold_components(M::AbstractManifold, p)\nsubmanifold_components(p)\n\nGet the projected components of p on the submanifolds of M. The components are returned in a Tuple.\n\n\n\n\n\n","category":"function"},{"location":"features/utilities.html#Manifolds.ProductRepr","page":"Utilities","title":"Manifolds.ProductRepr","text":"ProductRepr(parts)\n\nA more general but slower representation of points and tangent vectors on a product manifold.\n\nExample:\n\nA product point on a product manifold Sphere(2) × Euclidean(2) might be created as\n\nProductRepr([1.0, 0.0, 0.0], [2.0, 3.0])\n\nwhere [1.0, 0.0, 0.0] is the part corresponding to the sphere factor and [2.0, 3.0] is the part corresponding to the euclidean manifold.\n\nwarning: Warning\nProductRepr is deprecated and will be removed in a future release. Please use ArrayPartition instead.\n\n\n\n\n\n","category":"type"},{"location":"features/utilities.html#Specific-exception-types","page":"Utilities","title":"Specific exception types","text":"","category":"section"},{"location":"features/utilities.html","page":"Utilities","title":"Utilities","text":"For some manifolds it is useful to keep an extra index, at which point on the manifold, the error occurred as well as to collect all errors that occurred on a manifold. This page contains the manifold-specific error messages this package introduces.","category":"page"},{"location":"features/utilities.html","page":"Utilities","title":"Utilities","text":"Modules = [Manifolds]\nPages = [\"errors.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/oblique.html#Oblique-manifold","page":"Oblique manifold","title":"Oblique manifold","text":"","category":"section"},{"location":"manifolds/oblique.html","page":"Oblique manifold","title":"Oblique manifold","text":"The oblique manifold mathcalOB(nm) is modeled as an AbstractPowerManifold of the (real-valued) Sphere and uses ArrayPowerRepresentation. Points on the torus are hence matrices, x ℝ^nm.","category":"page"},{"location":"manifolds/oblique.html","page":"Oblique manifold","title":"Oblique manifold","text":"Modules = [Manifolds]\nPages = [\"manifolds/Oblique.jl\"]\nOrder = [:type]","category":"page"},{"location":"manifolds/oblique.html#Manifolds.Oblique","page":"Oblique manifold","title":"Manifolds.Oblique","text":"Oblique{N,M,𝔽} <: AbstractPowerManifold{𝔽}\n\nThe oblique manifold mathcalOB(nm) is the set of 𝔽-valued matrices with unit norm column endowed with the metric from the embedding. This yields exactly the same metric as considering the product metric of the unit norm vectors, i.e. PowerManifold of the (n-1)-dimensional Sphere.\n\nThe Sphere is stored internally within M.manifold, such that all functions of AbstractPowerManifold can be used directly.\n\nConstructor\n\nOblique(n,m)\n\nGenerate the manifold of matrices mathbb R^n m such that the m columns are unit vectors, i.e. from the Sphere(n-1).\n\n\n\n\n\n","category":"type"},{"location":"manifolds/oblique.html#Functions","page":"Oblique manifold","title":"Functions","text":"","category":"section"},{"location":"manifolds/oblique.html","page":"Oblique manifold","title":"Oblique manifold","text":"Most functions are directly implemented for an AbstractPowerManifold with ArrayPowerRepresentation except the following special cases:","category":"page"},{"location":"manifolds/oblique.html","page":"Oblique manifold","title":"Oblique manifold","text":"Modules = [Manifolds]\nPages = [\"manifolds/Oblique.jl\"]\nOrder = [:function]","category":"page"},{"location":"manifolds/oblique.html#ManifoldsBase.check_point-Tuple{Oblique, Any}","page":"Oblique manifold","title":"ManifoldsBase.check_point","text":"check_point(M::Oblique{n,m},p)\n\nChecks whether p is a valid point on the Oblique{m,n} M, i.e. is a matrix of m unit columns from mathbb R^n, i.e. each column is a point from Sphere(n-1).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/oblique.html#ManifoldsBase.check_vector-Union{Tuple{m}, Tuple{n}, Tuple{Oblique{n, m}, Any, Any}} where {n, m}","page":"Oblique manifold","title":"ManifoldsBase.check_vector","text":"check_vector(M::Oblique p, X; kwargs...)\n\nChecks whether X is a valid tangent vector to p on the Oblique M. This means, that p is valid, that X is of correct dimension and columnswise a tangent vector to the columns of p on the Sphere.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/oblique.html#ManifoldsBase.parallel_transport_to-Tuple{Oblique, Any, Any, Any}","page":"Oblique manifold","title":"ManifoldsBase.parallel_transport_to","text":"parallel_transport_to(M::Oblique, p, X, q)\n\nCompute the parallel transport on the Oblique manifold by doing a column wise parallel transport on the Sphere\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#Orthogonal-and-Unitary-matrices","page":"Orthogonal and Unitary Matrices","title":"Orthogonal and Unitary matrices","text":"","category":"section"},{"location":"manifolds/generalunitary.html","page":"Orthogonal and Unitary Matrices","title":"Orthogonal and Unitary Matrices","text":"Both OrthogonalMatrices and UnitaryMatrices are quite similar, as are Rotations, as well as unitary matrices with determinant equal to one. So these share a {common implementation}(@ref generalunitarymatrices)","category":"page"},{"location":"manifolds/generalunitary.html#Orthogonal-Matrices","page":"Orthogonal and Unitary Matrices","title":"Orthogonal Matrices","text":"","category":"section"},{"location":"manifolds/generalunitary.html","page":"Orthogonal and Unitary Matrices","title":"Orthogonal and Unitary Matrices","text":"Modules = [Manifolds]\nPages = [\"manifolds/Orthogonal.jl\"]\nOrder = [:constant, :type, :function]","category":"page"},{"location":"manifolds/generalunitary.html#Manifolds.OrthogonalMatrices","page":"Orthogonal and Unitary Matrices","title":"Manifolds.OrthogonalMatrices","text":" OrthogonalMatrices{n} = GeneralUnitaryMatrices{n,ℝ,AbsoluteDeterminantOneMatrices}\n\nThe manifold of (real) orthogonal matrices mathrmO(n).\n\nOrthogonalMatrices(n)\n\n\n\n\n\n","category":"type"},{"location":"manifolds/generalunitary.html#Unitary-Matrices","page":"Orthogonal and Unitary Matrices","title":"Unitary Matrices","text":"","category":"section"},{"location":"manifolds/generalunitary.html","page":"Orthogonal and Unitary Matrices","title":"Orthogonal and Unitary Matrices","text":"Modules = [Manifolds]\nPages = [\"manifolds/Unitary.jl\"]\nOrder = [:constant, :type, :function]","category":"page"},{"location":"manifolds/generalunitary.html#Manifolds.UnitaryMatrices","page":"Orthogonal and Unitary Matrices","title":"Manifolds.UnitaryMatrices","text":"const UnitaryMatrices{n,𝔽} = AbstarctUnitaryMatrices{n,𝔽,AbsoluteDeterminantOneMatrices}\n\nThe manifold U(n𝔽) of nn complex matrices (when 𝔽=ℂ) or quaternionic matrices (when 𝔽=ℍ) such that\n\np^mathrmHp = mathrmI_n\n\nwhere mathrmI_n is the nn identity matrix. Such matrices p have a property that lVert det(p) rVert = 1.\n\nThe tangent spaces are given by\n\n T_pU(n) coloneqq bigl\n X big pY text where Y text is skew symmetric i e Y = -Y^mathrmH\n bigr\n\nBut note that tangent vectors are represented in the Lie algebra, i.e. just using Y in the representation above.\n\nConstructor\n\nUnitaryMatrices(n, 𝔽::AbstractNumbers=ℂ)\n\nsee also OrthogonalMatrices for the real valued case.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/generalunitary.html#ManifoldDiff.riemannian_Hessian-Tuple{UnitaryMatrices, Vararg{Any, 4}}","page":"Orthogonal and Unitary Matrices","title":"ManifoldDiff.riemannian_Hessian","text":"riemannian_Hessian(M::UnitaryMatrices, p, G, H, X)\n\nThe Riemannian Hessian can be computed by adopting Eq. (5.6) [Ngu23], so very similar to the complex Stiefel manifold. The only difference is, that here the tangent vectors are stored in the Lie algebra, i.e. the update direction is actually pX instead of just X (in Stiefel). and that means the inverse has to be appliead to the (Euclidean) Hessian to map it into the Lie algebra.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#ManifoldsBase.Weingarten-Tuple{UnitaryMatrices, Any, Any, Any}","page":"Orthogonal and Unitary Matrices","title":"ManifoldsBase.Weingarten","text":"Weingarten(M::UnitaryMatrices, p, X, V)\n\nCompute the Weingarten map mathcal W_p at p on the Stiefel M with respect to the tangent vector X in T_pmathcal M and the normal vector V in N_pmathcal M.\n\nThe formula is due to [AMT13] given by\n\nmathcal W_p(XV) = -frac12pbigl(V^mathrmHX - X^mathrmHVbigr)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#ManifoldsBase.manifold_dimension-Union{Tuple{UnitaryMatrices{n, ℂ}}, Tuple{n}} where n","page":"Orthogonal and Unitary Matrices","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::UnitaryMatrices{n,ℂ}) where {n}\n\nReturn the dimension of the manifold unitary matrices.\n\ndim_mathrmU(n) = n^2\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#ManifoldsBase.manifold_dimension-Union{Tuple{UnitaryMatrices{n, ℍ}}, Tuple{n}} where n","page":"Orthogonal and Unitary Matrices","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::UnitaryMatrices{n,ℍ})\n\nReturn the dimension of the manifold unitary matrices.\n\ndim_mathrmU(n ℍ) = n(2n+1)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#generalunitarymatrices","page":"Orthogonal and Unitary Matrices","title":"Common functions","text":"","category":"section"},{"location":"manifolds/generalunitary.html","page":"Orthogonal and Unitary Matrices","title":"Orthogonal and Unitary Matrices","text":"Modules = [Manifolds]\nPages = [\"manifolds/GeneralUnitaryMatrices.jl\"]\nOrder = [:constant, :type, :function]","category":"page"},{"location":"manifolds/generalunitary.html#Manifolds.AbsoluteDeterminantOneMatrices","page":"Orthogonal and Unitary Matrices","title":"Manifolds.AbsoluteDeterminantOneMatrices","text":"AbsoluteDeterminantOneMatrices <: AbstractMatrixType\n\nA type to indicate that we require (orthogonal / unitary) matrices with normed determinant, i.e. that the absolute value of the determinant is 1.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/generalunitary.html#Manifolds.AbstractMatrixType","page":"Orthogonal and Unitary Matrices","title":"Manifolds.AbstractMatrixType","text":"AbstractMatrixType\n\nA plain type to distinguish different types of matrices, for example DeterminantOneMatrices and AbsoluteDeterminantOneMatrices\n\n\n\n\n\n","category":"type"},{"location":"manifolds/generalunitary.html#Manifolds.DeterminantOneMatrices","page":"Orthogonal and Unitary Matrices","title":"Manifolds.DeterminantOneMatrices","text":"DeterminantOneMatrices <: AbstractMatrixType\n\nA type to indicate that we require special (orthogonal / unitary) matrices, i.e. of determinant 1.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/generalunitary.html#Manifolds.GeneralUnitaryMatrices","page":"Orthogonal and Unitary Matrices","title":"Manifolds.GeneralUnitaryMatrices","text":"GeneralUnitaryMatrices{n,𝔽,S<:AbstractMatrixType} <: AbstractDecoratorManifold\n\nA common parametric type for matrices with a unitary property of size nn over the field mathbb F which additionally have the AbstractMatrixType, e.g. are DeterminantOneMatrices.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/generalunitary.html#Base.exp-Tuple{Manifolds.GeneralUnitaryMatrices, Any, Any}","page":"Orthogonal and Unitary Matrices","title":"Base.exp","text":"exp(M::Rotations, p, X)\nexp(M::OrthogonalMatrices, p, X)\nexp(M::UnitaryMatrices, p, X)\n\nCompute the exponential map, that is, since X is represented in the Lie algebra,\n\nexp_p(X) = p\\mathrm{e}^X\n\nFor different sizes, like n=234 there is specialised implementations\n\nThe algorithm used is a more numerically stable form of those proposed in [GX02] and [AR13].\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#Base.log-Tuple{Manifolds.GeneralUnitaryMatrices, Any, Any}","page":"Orthogonal and Unitary Matrices","title":"Base.log","text":"log(M::Rotations, p, X)\nlog(M::OrthogonalMatrices, p, X)\nlog(M::UnitaryMatrices, p, X)\n\nCompute the logarithmic map, that is, since the resulting X is represented in the Lie algebra,\n\nlog_p q = \\log(p^{\\mathrm{H}q)\n\nwhich is projected onto the skew symmetric matrices for numerical stability.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#Base.log-Union{Tuple{n}, Tuple{Manifolds.GeneralUnitaryMatrices{n, ℝ}, Vararg{Any}}} where n","page":"Orthogonal and Unitary Matrices","title":"Base.log","text":"log(M::Rotations, p, q)\n\nCompute the logarithmic map on the Rotations manifold M which is given by\n\nlog_p q = operatornamelog(p^mathrmTq)\n\nwhere operatornameLog denotes the matrix logarithm. For numerical stability, the result is projected onto the set of skew symmetric matrices.\n\nFor antipodal rotations the function returns deterministically one of the tangent vectors that point at q.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#Manifolds.cos_angles_4d_rotation_matrix-Tuple{Any}","page":"Orthogonal and Unitary Matrices","title":"Manifolds.cos_angles_4d_rotation_matrix","text":"cos_angles_4d_rotation_matrix(R)\n\n4D rotations can be described by two orthogonal planes that are unchanged by the action of the rotation (vectors within a plane rotate only within the plane). The cosines of the two angles αβ of rotation about these planes may be obtained from the distinct real parts of the eigenvalues of the rotation matrix. This function computes these more efficiently by solving the system\n\nbeginaligned\ncos α + cos β = frac12 operatornametr(R)\ncos α cos β = frac18 operatornametr(R)^2\n - frac116 operatornametr((R - R^T)^2) - 1\nendaligned\n\nBy convention, the returned values are sorted in decreasing order. See also angles_4d_skew_sym_matrix.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#Manifolds.manifold_volume-Union{Tuple{Manifolds.GeneralUnitaryMatrices{n, ℂ, Manifolds.DeterminantOneMatrices}}, Tuple{n}} where n","page":"Orthogonal and Unitary Matrices","title":"Manifolds.manifold_volume","text":"manifold_volume(::GeneralUnitaryMatrices{n,ℂ,DeterminantOneMatrices}) where {n}\n\nVolume of the manifold of complex general unitary matrices of determinant one. The formula reads [BST03]\n\nsqrtn 2^n-1 π^(n-1)(n+2)2 prod_k=1^n-1frac1k\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#Manifolds.manifold_volume-Union{Tuple{Manifolds.GeneralUnitaryMatrices{n, ℝ, Manifolds.AbsoluteDeterminantOneMatrices}}, Tuple{n}} where n","page":"Orthogonal and Unitary Matrices","title":"Manifolds.manifold_volume","text":"manifold_volume(::GeneralUnitaryMatrices{n,ℝ,AbsoluteDeterminantOneMatrices}) where {n}\n\nVolume of the manifold of real orthogonal matrices of absolute determinant one. The formula reads [BST03]:\n\nbegincases\nfrac2^k(2pi)^k^2prod_s=1^k-1 (2s) text if n = 2k \nfrac2^k+1(2pi)^k(k+1)prod_s=1^k-1 (2s+1) text if n = 2k+1\nendcases\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#Manifolds.manifold_volume-Union{Tuple{Rotations{n}}, Tuple{n}} where n","page":"Orthogonal and Unitary Matrices","title":"Manifolds.manifold_volume","text":"manifold_volume(::GeneralUnitaryMatrices{n,ℝ,DeterminantOneMatrices}) where {n}\n\nVolume of the manifold of real orthogonal matrices of determinant one. The formula reads [BST03]:\n\nbegincases\n2 text if n = 0 \nfrac2^k-12(2pi)^k^2prod_s=1^k-1 (2s) text if n = 2k+2 \nfrac2^k+12(2pi)^k(k+1)prod_s=1^k-1 (2s+1) text if n = 2k+1\nendcases\n\nIt differs from the paper by a factor of sqrt(2) due to a different choice of normalization.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#Manifolds.manifold_volume-Union{Tuple{UnitaryMatrices{n, ℂ}}, Tuple{n}} where n","page":"Orthogonal and Unitary Matrices","title":"Manifolds.manifold_volume","text":"manifold_volume(::GeneralUnitaryMatrices{n,ℂ,AbsoluteDeterminantOneMatrices}) where {n}\n\nVolume of the manifold of complex general unitary matrices of absolute determinant one. The formula reads [BST03]\n\nsqrtn 2^n+1 π^n(n+1)2 prod_k=1^n-1frac1k\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#Manifolds.volume_density-Tuple{Manifolds.GeneralUnitaryMatrices{2, ℝ}, Any, Any}","page":"Orthogonal and Unitary Matrices","title":"Manifolds.volume_density","text":"volume_density(M::GeneralUnitaryMatrices{2,ℝ}, p, X)\n\nVolume density on O(2)/SO(2) is equal to 1.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#Manifolds.volume_density-Tuple{Manifolds.GeneralUnitaryMatrices{3, ℝ}, Any, Any}","page":"Orthogonal and Unitary Matrices","title":"Manifolds.volume_density","text":"volume_density(M::GeneralUnitaryMatrices{3,ℝ}, p, X)\n\nCompute the volume density on O(3)/SO(3). The formula reads [FdHDF19]\n\nfrac1-1cos(sqrt2lVert X rVert)lVert X rVert^2\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#Manifolds.volume_density-Union{Tuple{n}, Tuple{Manifolds.GeneralUnitaryMatrices{n, ℝ}, Any, Any}} where n","page":"Orthogonal and Unitary Matrices","title":"Manifolds.volume_density","text":"volume_density(M::GeneralUnitaryMatrices{n,ℝ}, p, X) where {n}\n\nCompute volume density function of a sphere, i.e. determinant of the differential of exponential map exp(M, p, X). It is derived from Eq. (4.1) and Corollary 4.4 in [CLLD22]. See also Theorem 4.1 in [FdHDF19], (note that it uses a different convention).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#ManifoldsBase.check_point-Union{Tuple{𝔽}, Tuple{n}, Tuple{Manifolds.GeneralUnitaryMatrices{n, 𝔽, Manifolds.DeterminantOneMatrices}, Any}} where {n, 𝔽}","page":"Orthogonal and Unitary Matrices","title":"ManifoldsBase.check_point","text":"check_point(M::Rotations, p; kwargs...)\n\nCheck whether p is a valid point on the UnitaryMatrices M, i.e. that p has an determinante of absolute value one, i.e. that p^mathrmHp\n\nThe tolerance for the last test can be set using the kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#ManifoldsBase.check_point-Union{Tuple{𝔽}, Tuple{n}, Tuple{UnitaryMatrices{n, 𝔽}, Any}} where {n, 𝔽}","page":"Orthogonal and Unitary Matrices","title":"ManifoldsBase.check_point","text":"check_point(M::UnitaryMatrices, p; kwargs...)\ncheck_point(M::OrthogonalMatrices, p; kwargs...)\ncheck_point(M::GeneralUnitaryMatrices{n,𝔽}, p; kwargs...)\n\nCheck whether p is a valid point on the UnitaryMatrices or [OrthogonalMatrices] M, i.e. that p has an determinante of absolute value one\n\nThe tolerance for the last test can be set using the kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#ManifoldsBase.check_vector-Union{Tuple{𝔽}, Tuple{n}, Tuple{Manifolds.GeneralUnitaryMatrices{n, 𝔽}, Any, Any}} where {n, 𝔽}","page":"Orthogonal and Unitary Matrices","title":"ManifoldsBase.check_vector","text":"check_vector(M::UnitaryMatrices{n}, p, X; kwargs... )\ncheck_vector(M::OrthogonalMatrices{n}, p, X; kwargs... )\ncheck_vector(M::Rotations{n}, p, X; kwargs... )\ncheck_vector(M::GeneralUnitaryMatrices{n,𝔽}, p, X; kwargs... )\n\nCheck whether X is a tangent vector to p on the UnitaryMatrices space M, i.e. after check_point(M,p), X has to be skew symmetric (Hermitian) and orthogonal to p.\n\nThe tolerance for the last test can be set using the kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#ManifoldsBase.embed-Tuple{Manifolds.GeneralUnitaryMatrices, Any, Any}","page":"Orthogonal and Unitary Matrices","title":"ManifoldsBase.embed","text":"embed(M::GeneralUnitaryMatrices{n,𝔽}, p, X)\n\nEmbed the tangent vector X at point p in M from its Lie algebra representation (set of skew matrices) into the Riemannian submanifold representation\n\nThe formula reads\n\nX_textembedded = p * X\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#ManifoldsBase.get_coordinates-Union{Tuple{n}, Tuple{Manifolds.GeneralUnitaryMatrices{n, ℝ}, Vararg{Any}}} where n","page":"Orthogonal and Unitary Matrices","title":"ManifoldsBase.get_coordinates","text":"get_coordinates(M::Rotations, p, X)\nget_coordinates(M::OrthogonalMatrices, p, X)\nget_coordinates(M::UnitaryMatrices, p, X)\n\nExtract the unique tangent vector components X^i at point p on Rotations mathrmSO(n) from the matrix representation X of the tangent vector.\n\nThe basis on the Lie algebra 𝔰𝔬(n) is chosen such that for mathrmSO(2), X^1 = θ = X_21 is the angle of rotation, and for mathrmSO(3), (X^1 X^2 X^3) = (X_32 X_13 X_21) = θ u is the angular velocity and axis-angle representation, where u is the unit vector along the axis of rotation.\n\nFor mathrmSO(n) where n 4, the additional elements of X^i are X^j (j - 3)2 + k + 1 = X_jk, for j 4n k 1j).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#ManifoldsBase.get_embedding-Union{Tuple{Manifolds.GeneralUnitaryMatrices{n, 𝔽}}, Tuple{𝔽}, Tuple{n}} where {n, 𝔽}","page":"Orthogonal and Unitary Matrices","title":"ManifoldsBase.get_embedding","text":"get_embedding(M::OrthogonalMatrices{n})\nget_embedding(M::Rotations{n})\nget_embedding(M::UnitaryMatrices{n})\n\nReturn the embedding, i.e. The mathbb F^nn, where mathbb F = mathbb R for the first two and mathbb F = mathbb C for the unitary matrices.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#ManifoldsBase.get_vector-Union{Tuple{n}, Tuple{Manifolds.GeneralUnitaryMatrices{n, ℝ}, Vararg{Any}}} where n","page":"Orthogonal and Unitary Matrices","title":"ManifoldsBase.get_vector","text":"get_vector(M::OrthogonalMatrices, p, Xⁱ, B::DefaultOrthogonalBasis)\nget_vector(M::Rotations, p, Xⁱ, B::DefaultOrthogonalBasis)\n\nConvert the unique tangent vector components Xⁱ at point p on Rotations or OrthogonalMatrices to the matrix representation X of the tangent vector. See get_coordinates for the conventions used.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#ManifoldsBase.injectivity_radius-Tuple{Manifolds.GeneralUnitaryMatrices}","page":"Orthogonal and Unitary Matrices","title":"ManifoldsBase.injectivity_radius","text":"injectivity_radius(G::GeneraliUnitaryMatrices)\n\nReturn the injectivity radius for general unitary matrix manifolds, which is[1]\n\n operatornameinj_mathrmU(n) = π\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#ManifoldsBase.injectivity_radius-Union{Tuple{Manifolds.GeneralUnitaryMatrices{n, ℂ, Manifolds.DeterminantOneMatrices}}, Tuple{ℂ}, Tuple{n}} where {n, ℂ}","page":"Orthogonal and Unitary Matrices","title":"ManifoldsBase.injectivity_radius","text":"injectivity_radius(G::GeneralUnitaryMatrices{n,ℂ,DeterminantOneMatrices})\n\nReturn the injectivity radius for general complex unitary matrix manifolds, where the determinant is +1, which is[1]\n\n operatornameinj_mathrmSU(n) = π sqrt2\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#ManifoldsBase.injectivity_radius-Union{Tuple{Manifolds.GeneralUnitaryMatrices{n, ℝ}}, Tuple{n}} where n","page":"Orthogonal and Unitary Matrices","title":"ManifoldsBase.injectivity_radius","text":"injectivity_radius(G::SpecialOrthogonal)\ninjectivity_radius(G::Orthogonal)\ninjectivity_radius(M::Rotations)\ninjectivity_radius(M::Rotations, ::ExponentialRetraction)\n\nReturn the radius of injectivity on the Rotations manifold M, which is πsqrt2. [1]\n\n[1]: For a derivation of the injectivity radius, see sethaxen.com/blog/2023/02/the-injectivity-radii-of-the-unitary-groups/.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#ManifoldsBase.is_flat-Tuple{Manifolds.GeneralUnitaryMatrices}","page":"Orthogonal and Unitary Matrices","title":"ManifoldsBase.is_flat","text":"is_flat(M::GeneralUnitaryMatrices)\n\nReturn true if GeneralUnitaryMatrices M is SO(2) or U(1) and false otherwise.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#ManifoldsBase.manifold_dimension-Union{Tuple{Manifolds.GeneralUnitaryMatrices{n, ℂ, Manifolds.DeterminantOneMatrices}}, Tuple{n}} where n","page":"Orthogonal and Unitary Matrices","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::GeneralUnitaryMatrices{n,ℂ,DeterminantOneMatrices})\n\nReturn the dimension of the manifold of special unitary matrices.\n\ndim_mathrmSU(n) = n^2-1\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#ManifoldsBase.manifold_dimension-Union{Tuple{Manifolds.GeneralUnitaryMatrices{n, ℝ}}, Tuple{n}} where n","page":"Orthogonal and Unitary Matrices","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::Rotations)\nmanifold_dimension(M::OrthogonalMatrices)\n\nReturn the dimension of the manifold orthogonal matrices and of the manifold of rotations\n\ndim_mathrmO(n) = dim_mathrmSO(n) = fracn(n-1)2\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#ManifoldsBase.project-Tuple{Manifolds.GeneralUnitaryMatrices, Any, Any}","page":"Orthogonal and Unitary Matrices","title":"ManifoldsBase.project","text":" project(M::OrthogonalMatrices{n}, p, X)\n project(M::Rotations{n}, p, X)\n project(M::UnitaryMatrices{n}, p, X)\n\nOrthogonally project the tangent vector X 𝔽^n n, mathbb F mathbb R mathbb C to the tangent space of M at p, and change the representer to use the corresponding Lie algebra, i.e. we compute\n\n operatornameproj_p(X) = fracp^mathrmH X - (p^mathrmH X)^mathrmH2\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#ManifoldsBase.project-Union{Tuple{𝔽}, Tuple{n}, Tuple{UnitaryMatrices{n, 𝔽}, Any}} where {n, 𝔽}","page":"Orthogonal and Unitary Matrices","title":"ManifoldsBase.project","text":" project(G::UnitaryMatrices{n}, p)\n project(G::OrthogonalMatrices{n}, p)\n\nProject the point p 𝔽^n n to the nearest point in mathrmU(n𝔽)=Unitary(n,𝔽) under the Frobenius norm. If p = U S V^mathrmH is the singular value decomposition of p, then the projection is\n\n operatornameproj_mathrmU(n𝔽) colon p U V^mathrmH\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#ManifoldsBase.retract-Union{Tuple{𝔽}, Tuple{n}, Tuple{Manifolds.GeneralUnitaryMatrices{n, 𝔽}, Any, Any, PolarRetraction}} where {n, 𝔽}","page":"Orthogonal and Unitary Matrices","title":"ManifoldsBase.retract","text":"retract(M::Rotations, p, X, ::PolarRetraction)\nretract(M::OrthogonalMatrices, p, X, ::PolarRetraction)\n\nCompute the SVD-based retraction on the Rotations and OrthogonalMatrices M from p in direction X (as an element of the Lie group) and is a second-order approximation of the exponential map. Let\n\nUSV = p + pX\n\nbe the singular value decomposition, then the formula reads\n\noperatornameretr_p X = UV^mathrmT\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#ManifoldsBase.retract-Union{Tuple{𝔽}, Tuple{n}, Tuple{Manifolds.GeneralUnitaryMatrices{n, 𝔽}, Any, Any, QRRetraction}} where {n, 𝔽}","page":"Orthogonal and Unitary Matrices","title":"ManifoldsBase.retract","text":"retract(M::Rotations, p, X, ::QRRetraction)\nretract(M::OrthogonalMatrices, p. X, ::QRRetraction)\n\nCompute the QR-based retraction on the Rotations and OrthogonalMatrices M from p in direction X (as an element of the Lie group), which is a first-order approximation of the exponential map.\n\nThis is also the default retraction on these manifolds.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#ManifoldsBase.riemann_tensor-Tuple{Manifolds.GeneralUnitaryMatrices, Vararg{Any, 4}}","page":"Orthogonal and Unitary Matrices","title":"ManifoldsBase.riemann_tensor","text":"riemann_tensor(::GeneralUnitaryMatrices, p, X, Y, Z)\n\nCompute the value of Riemann tensor on the GeneralUnitaryMatrices manifold. The formula reads [Ren11] R(XY)Z=frac14Z X Y.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#Statistics.mean-Union{Tuple{n}, Tuple{Manifolds.GeneralUnitaryMatrices{n, ℝ}, Any}} where n","page":"Orthogonal and Unitary Matrices","title":"Statistics.mean","text":"mean(\n M::Rotations,\n x::AbstractVector,\n [w::AbstractWeights,]\n method = GeodesicInterpolationWithinRadius(π/2/√2);\n kwargs...,\n)\n\nCompute the Riemannian mean of x using GeodesicInterpolationWithinRadius.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalunitary.html#Footnotes-and-References","page":"Orthogonal and Unitary Matrices","title":"Footnotes and References","text":"","category":"section"},{"location":"tutorials/integration.html#Integration","page":"integrate on manifolds and handle probability densities","title":"Integration","text":"","category":"section"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"This part of documentation covers integration of scalar functions defined on manifolds f colon mathcalM to mathbbR:","category":"page"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"int_mathcal M f(p) mathrmdp","category":"page"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"The basic concepts are derived from geometric measure theory. In principle, there are many ways in which a manifold can be equipped with a measure that can be later used to define an integral. One of the most popular ways is based on pushing the Lebesgue measure on a tangent space through the exponential map. Any other suitable atlas could be used, not just the one defined by normal coordinates, though each one requires different volume density corrections due to the Jacobian determinant of the pushforward. Manifolds.jl provides the function volume_density that calculates that quantity, denoted theta_p(X). See for example [BP19], Definition 11, for a precise description using Jacobi fields.","category":"page"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"While many sources define volume density as a function of two points, Manifolds.jl decided to use the more general point-tangent vector formulation. The two-points variant can be implemented as","category":"page"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"using Manifolds\nvolume_density_two_points(M::AbstractManifold, p, q) = volume_density(M, p, log(M, p, q))","category":"page"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"volume_density_two_points (generic function with 1 method)","category":"page"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"The simplest way to of integrating a function on a compact manifold is through a 📖 Monte Carlo integrator. A simple variant can be implemented as follows (assuming uniform distribution of rand):","category":"page"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"using LinearAlgebra, Distributions, SpecialFunctions\nfunction simple_mc_integrate(M::AbstractManifold, f; N::Int = 1000)\n V = manifold_volume(M)\n sum = 0.0\n q = rand(M)\n for i in 1:N\n sum += f(M, q)\n rand!(M, q)\n end\n return V * sum/N\nend","category":"page"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"simple_mc_integrate (generic function with 1 method)","category":"page"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"We used the function manifold_volume to get the volume of the set over which the integration is performed, as described in the linked Wikipedia article.","category":"page"},{"location":"tutorials/integration.html#Distributions","page":"integrate on manifolds and handle probability densities","title":"Distributions","text":"","category":"section"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"We will now try to verify that volume density correction correctly changes probability density of an exponential-wrapped normal distribution. pdf_tangent_space (defined in the next code block) represents probability density of a normally distributed random variable X_T in the tangent space T_p mathcalM. Its probability density (with respect to the Lebesgue measure of the tangent space) is f_X_Tcolon T_p mathcalM to mathbbR.","category":"page"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"pdf_manifold (defined below) refers to the probability density of the distribution X_M from the tangent space T_p mathcalM wrapped using exponential map on the manifold. The formula for probability density with respect to pushforward measure of the Lebesgue measure in the tangent space reads","category":"page"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"f_X_M(q) = sum_X in T_pmathcalM exp_p(X)=q fracf_X_T(X)theta_p(X)","category":"page"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"volume_density function calculates the correction theta_p(X).","category":"page"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"function pdf_tangent_space(M::AbstractManifold, p)\n return pdf(MvNormal(zeros(manifold_dimension(M)), 0.2*I), p)\nend\n\nfunction pdf_manifold(M::AbstractManifold, q)\n p = [1.0, 0.0, 0.0]\n X = log(M, p, q)\n Xc = get_coordinates(M, p, X, DefaultOrthonormalBasis())\n vd = abs(volume_density(M, p, X))\n if vd > eps()\n return pdf_tangent_space(M, Xc) / vd\n else\n return 0.0\n end\nend\n\nprintln(simple_mc_integrate(Sphere(2), pdf_manifold; N=1000000))","category":"page"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"0.9997767542496258","category":"page"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"The function simple_mc_integrate, defined in the previous section, is used to verify that the density integrates to 1 over the manifold.","category":"page"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"Note that our pdf_manifold implements a simplified version of f_X_M which assumes that the probability mass of pdf_tangent_space outside of (local) injectivity radius at p is negligible. In such case there is only one non-zero summand in the formula for f_X_M(q), namely X=log_p(q). Otherwise we would have to consider other vectors Yin T_p mathcalM such that exp_p(Y) = q in that sum.","category":"page"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"Remarkably, exponential-wrapped distributions possess three important qualities [CLLD22]:","category":"page"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"Densities of X_M are explicit. There is no normalization constant that needs to be computed like in truncated distributions.\nSampling from X_M is easy. It suffices to get a sample from X_T and pass it to the exponential map.\nIf mean of X_T is 0, then there is a simple correspondence between moments of X_M and X_T, for example p is the mean of X_M.","category":"page"},{"location":"tutorials/integration.html#Kernel-density-estimation","page":"integrate on manifolds and handle probability densities","title":"Kernel density estimation","text":"","category":"section"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"We can also make a Pelletier’s isotropic kernel density estimator. Given points p_1 p_2 dots p_n on d-dimensional manifold mathcal M the density at point q is defined as","category":"page"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"f(q) = frac1n h^d sum_i=1^n frac1theta_q(log_q(p_i))Kleft( fracd(q p_i)h right)","category":"page"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"where h is the bandwidth, a small positive number less than the injectivity radius of mathcal M and KcolonmathbbRtomathbbR is a kernel function. Note that Pelletier’s estimator can only use radially-symmetric kernels. The radially symmetric multivariate Epanechnikov kernel used in the example below is described in [LW19].","category":"page"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"struct PelletierKDE{TM<:AbstractManifold,TPts<:AbstractVector}\n M::TM\n bandwidth::Float64\n pts::TPts\nend\n\n(kde::PelletierKDE)(::AbstractManifold, p) = kde(p)\nfunction (kde::PelletierKDE)(p)\n n = length(kde.pts)\n d = manifold_dimension(kde.M)\n sum_kde = 0.0\n function epanechnikov_kernel(x)\n if x < 1\n return gamma(2+d/2) * (1-x^2)/(π^(d/2))\n else\n return 0.0\n end\n end\n for i in 1:n\n X = log(kde.M, p, kde.pts[i])\n Xn = norm(kde.M, p, X)\n sum_kde += epanechnikov_kernel(Xn / kde.bandwidth) / volume_density(kde.M, p, X)\n end\n sum_kde /= n * kde.bandwidth^d\n return sum_kde\nend\n\nM = Sphere(2)\npts = rand(M, 8)\nkde = PelletierKDE(M, 0.7, pts)\nprintln(simple_mc_integrate(Sphere(2), kde; N=1000000))\nprintln(kde(rand(M)))","category":"page"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"1.000087600306794\n0.027242409437460688","category":"page"},{"location":"tutorials/integration.html#Technical-notes","page":"integrate on manifolds and handle probability densities","title":"Technical notes","text":"","category":"section"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"This section contains a few technical notes that are relevant to the problem of integration on manifolds but can be freely skipped on the first read of the tutorial.","category":"page"},{"location":"tutorials/integration.html#Conflicting-statements-about-volume-of-a-manifold","page":"integrate on manifolds and handle probability densities","title":"Conflicting statements about volume of a manifold","text":"","category":"section"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"manifold_volume and volume_density are closely related to each other, though very few sources explore this connection, and some even claiming a certain level of arbitrariness in defining manifold_volume. Volume is sometimes considered arbitrary because Riemannian metrics on some spaces like the manifold of rotations are defined with arbitrary constants. However, once a constant is picked (and it must be picked before any useful computation can be performed), all geometric operations must follow in a consistent way: inner products, exponential and logarithmic maps, volume densities, etc. Manifolds.jl consistently picks such constants and provides a unified framework, though it sometimes results in picking a different constant than what is the most popular in some sub-communities.","category":"page"},{"location":"tutorials/integration.html#Haar-measures","page":"integrate on manifolds and handle probability densities","title":"Haar measures","text":"","category":"section"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"On Lie groups the situation regarding integration is more complicated. Invariance under left or right group action is a desired property that leads one to consider Haar measures [Tor20]. It is, however, unclear what are the practical benefits of considering Haar measures over the Lebesgue measure of the underlying manifold, which often turns out to be invariant anyway.","category":"page"},{"location":"tutorials/integration.html#Integration-in-charts","page":"integrate on manifolds and handle probability densities","title":"Integration in charts","text":"","category":"section"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"Integration through charts is an approach currently not supported by Manifolds.jl. One has to define a suitable set of disjoint charts covering the entire manifold and use a method for multivariate Euclidean integration. Note that ranges of parameters have to be adjusted for each manifold and scaling based on the metric needs to be applied. See [BST03] for some considerations on symmetric spaces.","category":"page"},{"location":"tutorials/integration.html#References","page":"integrate on manifolds and handle probability densities","title":"References","text":"","category":"section"},{"location":"tutorials/integration.html#Literature","page":"integrate on manifolds and handle probability densities","title":"Literature","text":"","category":"section"},{"location":"tutorials/integration.html","page":"integrate on manifolds and handle probability densities","title":"integrate on manifolds and handle probability densities","text":"
    [BST03]
    \n
    \n
    L. J. Boya, E. Sudarshan and T. Tilma. Volumes of compact manifolds. Reports on Mathematical Physics 52, 401–422 (2003).
    \n
    [BP19]
    \n
    \n
    A. L. Brigant and S. Puechmorel. Approximation of Densities on Riemannian Manifolds. Entropy 21, 43 (2019).
    \n
    [CLLD22]
    \n
    \n
    E. Chevallier, D. Li, Y. Lu and D. B. Dunson. Exponential-wrapped distributions on symmetric spaces. ArXiv Preprint (2022).
    \n
    [LW19]
    \n
    \n
    N. Langren{é} and X. Warin. Fast and Stable Multivariate Kernel Density Estimation by Fast Sum Updating. Journal of Computational and Graphical Statistics 28, 596–608 (2019).
    \n
    [Tor20]
    \n
    \n
    S. Tornier. Haar Measures (2020).
    \n
    \n
    ","category":"page"},{"location":"manifolds/multinomialdoublystochastic.html#Multinomial-doubly-stochastic-matrices","page":"Multinomial doubly stochastic matrices","title":"Multinomial doubly stochastic matrices","text":"","category":"section"},{"location":"manifolds/multinomialdoublystochastic.html","page":"Multinomial doubly stochastic matrices","title":"Multinomial doubly stochastic matrices","text":"Modules = [Manifolds]\nPages = [\"manifolds/MultinomialDoublyStochastic.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/multinomialdoublystochastic.html#Manifolds.AbstractMultinomialDoublyStochastic","page":"Multinomial doubly stochastic matrices","title":"Manifolds.AbstractMultinomialDoublyStochastic","text":"AbstractMultinomialDoublyStochastic{N} <: AbstractDecoratorManifold{ℝ}\n\nA common type for manifolds that are doubly stochastic, for example by direct constraint MultinomialDoubleStochastic or by symmetry MultinomialSymmetric, as long as they are also modeled as IsIsometricEmbeddedManifold.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/multinomialdoublystochastic.html#Manifolds.MultinomialDoubleStochastic","page":"Multinomial doubly stochastic matrices","title":"Manifolds.MultinomialDoubleStochastic","text":"MultinomialDoublyStochastic{n} <: AbstractMultinomialDoublyStochastic{N}\n\nThe set of doubly stochastic multinomial matrices consists of all nn matrices with stochastic columns and rows, i.e.\n\nbeginaligned\nmathcalDP(n) coloneqq biglp ℝ^nn big p_ij 0 text for all i=1n j=1m\n pmathbf1_n = p^mathrmTmathbf1_n = mathbf1_n\nbigr\nendaligned\n\nwhere mathbf1_n is the vector of length n containing ones.\n\nThe tangent space can be written as\n\nT_pmathcalDP(n) coloneqq bigl\nX ℝ^nn big X = X^mathrmT text and \nXmathbf1_n = X^mathrmTmathbf1_n = mathbf0_n\nbigr\n\nwhere mathbf0_n is the vector of length n containing zeros.\n\nMore details can be found in Section III [DH19].\n\nConstructor\n\nMultinomialDoubleStochastic(n)\n\nGenerate the manifold of matrices mathbb R^nn that are doubly stochastic and symmetric.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/multinomialdoublystochastic.html#ManifoldsBase.check_point-Union{Tuple{n}, Tuple{MultinomialDoubleStochastic{n}, Any}} where n","page":"Multinomial doubly stochastic matrices","title":"ManifoldsBase.check_point","text":"check_point(M::MultinomialDoubleStochastic, p)\n\nChecks whether p is a valid point on the MultinomialDoubleStochastic(n) M, i.e. is a matrix with positive entries whose rows and columns sum to one.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/multinomialdoublystochastic.html#ManifoldsBase.check_vector-Union{Tuple{n}, Tuple{MultinomialDoubleStochastic{n}, Any, Any}} where n","page":"Multinomial doubly stochastic matrices","title":"ManifoldsBase.check_vector","text":"check_vector(M::MultinomialDoubleStochastic p, X; kwargs...)\n\nChecks whether X is a valid tangent vector to p on the MultinomialDoubleStochastic M. This means, that p is valid, that X is of correct dimension and sums to zero along any column or row.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/multinomialdoublystochastic.html#ManifoldsBase.is_flat-Tuple{MultinomialDoubleStochastic}","page":"Multinomial doubly stochastic matrices","title":"ManifoldsBase.is_flat","text":"is_flat(::MultinomialDoubleStochastic)\n\nReturn false. MultinomialDoubleStochastic is not a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/multinomialdoublystochastic.html#ManifoldsBase.manifold_dimension-Union{Tuple{MultinomialDoubleStochastic{n}}, Tuple{n}} where n","page":"Multinomial doubly stochastic matrices","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::MultinomialDoubleStochastic{n}) where {n}\n\nreturns the dimension of the MultinomialDoubleStochastic manifold namely\n\noperatornamedim_mathcalDP(n) = (n-1)^2\n\n\n\n\n\n","category":"method"},{"location":"manifolds/multinomialdoublystochastic.html#ManifoldsBase.project-Tuple{Manifolds.AbstractMultinomialDoublyStochastic, Any}","page":"Multinomial doubly stochastic matrices","title":"ManifoldsBase.project","text":"project(\n M::AbstractMultinomialDoublyStochastic,\n p;\n maxiter = 100,\n tolerance = eps(eltype(p))\n)\n\nproject a matrix p with positive entries applying Sinkhorn's algorithm. Note that this projct method – different from the usual case, accepts keywords.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/multinomialdoublystochastic.html#ManifoldsBase.project-Tuple{MultinomialDoubleStochastic, Any, Any}","page":"Multinomial doubly stochastic matrices","title":"ManifoldsBase.project","text":"project(M::MultinomialDoubleStochastic{n}, p, Y) where {n}\n\nProject Y onto the tangent space at p on the MultinomialDoubleStochastic M, return the result in X. The formula reads\n\n operatornameproj_p(Y) = Y - (αmathbf1_n^mathrmT + mathbf1_nβ^mathrmT) p\n\nwhere denotes the Hadamard or elementwise product and mathbb1_n is the vector of length n containing ones. The two vectors αβ ℝ^nn are computed as a solution (typically using the left pseudo inverse) of\n\n beginpmatrix I_n pp^mathrmT I_n endpmatrix\n beginpmatrix α βendpmatrix\n =\n beginpmatrix Ymathbf1Y^mathrmTmathbf1endpmatrix\n\nwhere I_n is the nn unit matrix and mathbf1_n is the vector of length n containing ones.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/multinomialdoublystochastic.html#ManifoldsBase.retract-Tuple{MultinomialDoubleStochastic, Any, Any, ProjectionRetraction}","page":"Multinomial doubly stochastic matrices","title":"ManifoldsBase.retract","text":"retract(M::MultinomialDoubleStochastic, p, X, ::ProjectionRetraction)\n\ncompute a projection based retraction by projecting podotexp(Xp) back onto the manifold, where are elementwise multiplication and division, respectively. Similarly, exp refers to the elementwise exponentiation.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/multinomialdoublystochastic.html#Literature","page":"Multinomial doubly stochastic matrices","title":"Literature","text":"","category":"section"},{"location":"manifolds/product.html#ProductManifoldSection","page":"Product manifold","title":"Product manifold","text":"","category":"section"},{"location":"manifolds/product.html","page":"Product manifold","title":"Product manifold","text":"Product manifold mathcal M = mathcalM_1 mathcalM_2 mathcalM_n of manifolds mathcalM_1 mathcalM_2 mathcalM_n. Points on the product manifold can be constructed using ProductRepr with canonical projections Π_i mathcalM mathcalM_i for i 1 2 n provided by submanifold_component.","category":"page"},{"location":"manifolds/product.html","page":"Product manifold","title":"Product manifold","text":"Modules = [Manifolds]\nPages = [\"manifolds/ProductManifold.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/product.html#Manifolds.InverseProductRetraction","page":"Product manifold","title":"Manifolds.InverseProductRetraction","text":"InverseProductRetraction(retractions::AbstractInverseRetractionMethod...)\n\nProduct inverse retraction of inverse retractions. Works on ProductManifold.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/product.html#Manifolds.ProductBasisData","page":"Product manifold","title":"Manifolds.ProductBasisData","text":"ProductBasisData\n\nA typed tuple to store tuples of data of stored/precomputed bases for a ProductManifold.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/product.html#Manifolds.ProductFVectorDistribution","page":"Product manifold","title":"Manifolds.ProductFVectorDistribution","text":"ProductFVectorDistribution([type::VectorBundleFibers], [x], distrs...)\n\nGenerates a random vector at point x from vector space (a fiber of a tangent bundle) of type type using the product distribution of given distributions.\n\nVector space type and x can be automatically inferred from distributions distrs.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/product.html#Manifolds.ProductManifold","page":"Product manifold","title":"Manifolds.ProductManifold","text":"ProductManifold{𝔽,TM<:Tuple} <: AbstractManifold{𝔽}\n\nProduct manifold M_1 M_2 M_n with product geometry.\n\nConstructor\n\nProductManifold(M_1, M_2, ..., M_n)\n\ngenerates the product manifold M_1 M_2 M_n. Alternatively, the same manifold can be contructed using the × operator: M_1 × M_2 × M_3.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/product.html#Manifolds.ProductMetric","page":"Product manifold","title":"Manifolds.ProductMetric","text":"ProductMetric <: AbstractMetric\n\nA type to represent the product of metrics for a ProductManifold.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/product.html#Manifolds.ProductPointDistribution","page":"Product manifold","title":"Manifolds.ProductPointDistribution","text":"ProductPointDistribution(M::ProductManifold, distributions)\n\nProduct distribution on manifold M, combined from distributions.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/product.html#Manifolds.ProductRetraction","page":"Product manifold","title":"Manifolds.ProductRetraction","text":"ProductRetraction(retractions::AbstractRetractionMethod...)\n\nProduct retraction of retractions. Works on ProductManifold.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/product.html#Manifolds.ProductVectorTransport","page":"Product manifold","title":"Manifolds.ProductVectorTransport","text":"ProductVectorTransport(methods::AbstractVectorTransportMethod...)\n\nProduct vector transport type of methods. Works on ProductManifold.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/product.html#Base.exp-Tuple{ProductManifold, Vararg{Any}}","page":"Product manifold","title":"Base.exp","text":"exp(M::ProductManifold, p, X)\n\ncompute the exponential map from p in the direction of X on the ProductManifold M, which is the elementwise exponential map on the internal manifolds that build M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#Base.getindex-Tuple{ProductManifold, Integer}","page":"Product manifold","title":"Base.getindex","text":"getindex(M::ProductManifold, i)\nM[i]\n\naccess the ith manifold component from the ProductManifold M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#Base.getindex-Tuple{ProductRepr, ProductManifold, Union{Colon, Integer, Val, AbstractVector}}","page":"Product manifold","title":"Base.getindex","text":"getindex(p, M::ProductManifold, i::Union{Integer,Colon,AbstractVector})\np[M::ProductManifold, i]\n\nAccess the element(s) at index i of a point p on a ProductManifold M by linear indexing. See also Array Indexing in Julia.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#Base.log-Tuple{ProductManifold, Vararg{Any}}","page":"Product manifold","title":"Base.log","text":"log(M::ProductManifold, p, q)\n\nCompute the logarithmic map from p to q on the ProductManifold M, which can be computed using the logarithmic maps of the manifolds elementwise.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#Base.rand-Tuple{ProductManifold}","page":"Product manifold","title":"Base.rand","text":"rand(M::ProductManifold; parts_kwargs = map(_ -> (;), M.manifolds))\n\nReturn a random point on ProductManifold M. parts_kwargs is a tuple of keyword arguments for rand on each manifold in M.manifolds.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#Base.setindex!-Tuple{Union{ProductRepr, ArrayPartition}, Any, ProductManifold, Union{Colon, Integer, Val, AbstractVector}}","page":"Product manifold","title":"Base.setindex!","text":"setindex!(q, p, M::ProductManifold, i::Union{Integer,Colon,AbstractVector})\nq[M::ProductManifold,i...] = p\n\nset the element [i...] of a point q on a ProductManifold by linear indexing to q. See also Array Indexing in Julia.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#LinearAlgebra.cross-Tuple{Vararg{AbstractManifold}}","page":"Product manifold","title":"LinearAlgebra.cross","text":"cross(M, N)\ncross(M1, M2, M3,...)\n\nReturn the ProductManifold For two AbstractManifolds M and N, where for the case that one of them is a ProductManifold itself, the other is either prepended (if N is a product) or appenden (if M) is. If both are product manifold, they are combined into one product manifold, keeping the order.\n\nFor the case that more than one is a product manifold of these is build with the same approach as above\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#LinearAlgebra.norm-Tuple{ProductManifold, Any, Any}","page":"Product manifold","title":"LinearAlgebra.norm","text":"norm(M::ProductManifold, p, X)\n\nCompute the norm of X from the tangent space of p on the ProductManifold, i.e. from the element wise norms the 2-norm is computed.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#ManifoldDiff.riemannian_Hessian-Tuple{ProductManifold, Vararg{Any, 4}}","page":"Product manifold","title":"ManifoldDiff.riemannian_Hessian","text":"Y = riemannian_Hessian(M::ProductManifold, p, G, H, X)\nriemannian_Hessian!(M::ProductManifold, Y, p, G, H, X)\n\nCompute the Riemannian Hessian operatornameHess f(p)X given the Euclidean gradient f(tilde p) in G and the Euclidean Hessian ^2 f(tilde p)tilde X in H, where tilde p tilde X are the representations of pX in the embedding,.\n\nOn a product manifold, this decouples and can be computed elementwise.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#Manifolds.flat-Tuple{ProductManifold, Vararg{Any}}","page":"Product manifold","title":"Manifolds.flat","text":"flat(M::ProductManifold, p, X::FVector{TangentSpaceType})\n\nuse the musical isomorphism to transform the tangent vector X from the tangent space at p on the ProductManifold M to a cotangent vector. This can be done elementwise for every entry of X (with respect to the corresponding entry in p) separately.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#Manifolds.manifold_volume-Tuple{ProductManifold}","page":"Product manifold","title":"Manifolds.manifold_volume","text":"manifold_dimension(M::ProductManifold)\n\nReturn the volume of ProductManifold M, i.e. product of volumes of the manifolds M is constructed from.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#Manifolds.number_of_components-Union{Tuple{ProductManifold{𝔽, <:Tuple{Vararg{Any, N}}}}, Tuple{N}, Tuple{𝔽}} where {𝔽, N}","page":"Product manifold","title":"Manifolds.number_of_components","text":"number_of_components(M::ProductManifold{<:NTuple{N,Any}}) where {N}\n\nCalculate the number of manifolds multiplied in the given ProductManifold M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#Manifolds.sharp-Tuple{ProductManifold, Vararg{Any}}","page":"Product manifold","title":"Manifolds.sharp","text":"sharp(M::ProductManifold, p, ξ::FVector{CotangentSpaceType})\n\nUse the musical isomorphism to transform the cotangent vector ξ from the tangent space at p on the ProductManifold M to a tangent vector. This can be done elementwise for every entry of ξ (and p) separately\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#Manifolds.submanifold-Tuple{ProductManifold, Integer}","page":"Product manifold","title":"Manifolds.submanifold","text":"submanifold(M::ProductManifold, i::Integer)\n\nExtract the ith factor of the product manifold M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#Manifolds.submanifold-Tuple{ProductManifold, Val}","page":"Product manifold","title":"Manifolds.submanifold","text":"submanifold(M::ProductManifold, i::Val)\nsubmanifold(M::ProductManifold, i::AbstractVector)\n\nExtract the factor of the product manifold M indicated by indices in i. For example, for i equal to Val((1, 3)) the product manifold constructed from the first and the third factor is returned.\n\nThe version with AbstractVector is not type-stable, for better preformance use Val.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#Manifolds.volume_density-Tuple{ProductManifold, Any, Any}","page":"Product manifold","title":"Manifolds.volume_density","text":"volume_density(M::ProductManifold, p, X)\n\nReturn volume density on the ProductManifold M, i.e. product of constituent volume densities.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#ManifoldsBase.Weingarten-Tuple{ProductManifold, Any, Any, Any}","page":"Product manifold","title":"ManifoldsBase.Weingarten","text":"Y = Weingarten(M::ProductManifold, p, X, V)\nWeingarten!(M::ProductManifold, Y, p, X, V)\n\nSince the metric decouples, also the computation of the Weingarten map mathcal W_p can be computed elementwise on the single elements of the ProductManifold M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#ManifoldsBase.change_metric-Tuple{ProductManifold, AbstractMetric, Any, Any}","page":"Product manifold","title":"ManifoldsBase.change_metric","text":"change_metric(M::ProductManifold, ::AbstractMetric, p, X)\n\nSince the metric on a product manifold decouples, the change of metric can be done elementwise.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#ManifoldsBase.change_representer-Tuple{ProductManifold, AbstractMetric, Any, Any}","page":"Product manifold","title":"ManifoldsBase.change_representer","text":"change_representer(M::ProductManifold, ::AbstractMetric, p, X)\n\nSince the metric on a product manifold decouples, the change of a representer can be done elementwise\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#ManifoldsBase.check_point-Tuple{ProductManifold, Union{ProductRepr, ArrayPartition}}","page":"Product manifold","title":"ManifoldsBase.check_point","text":"check_point(M::ProductManifold, p; kwargs...)\n\nCheck whether p is a valid point on the ProductManifold M. If p is not a point on M a CompositeManifoldError.consisting of all error messages of the components, for which the tests fail is returned.\n\nThe tolerance for the last test can be set using the kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#ManifoldsBase.check_size-Tuple{ProductManifold, Union{ProductRepr, ArrayPartition}}","page":"Product manifold","title":"ManifoldsBase.check_size","text":"check_size(M::ProductManifold, p; kwargs...)\n\nCheck whether p is of valid size on the ProductManifold M. If p has components of wrong size a CompositeManifoldError.consisting of all error messages of the components, for which the tests fail is returned.\n\nThe tolerance for the last test can be set using the kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#ManifoldsBase.check_vector-Tuple{ProductManifold, Union{ProductRepr, ArrayPartition}, Union{ProductRepr, ArrayPartition}}","page":"Product manifold","title":"ManifoldsBase.check_vector","text":"check_vector(M::ProductManifold, p, X; kwargs... )\n\nCheck whether X is a tangent vector to p on the ProductManifold M, i.e. all projections to base manifolds must be respective tangent vectors. If X is not a tangent vector to p on M a CompositeManifoldError.consisting of all error messages of the components, for which the tests fail is returned.\n\nThe tolerance for the last test can be set using the kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#ManifoldsBase.distance-Tuple{ProductManifold, Any, Any}","page":"Product manifold","title":"ManifoldsBase.distance","text":"distance(M::ProductManifold, p, q)\n\nCompute the distance between two points p and q on the ProductManifold M, which is the 2-norm of the elementwise distances on the internal manifolds that build M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#ManifoldsBase.get_component-Tuple{ProductManifold, Any, Any}","page":"Product manifold","title":"ManifoldsBase.get_component","text":"get_component(M::ProductManifold, p, i)\n\nGet the ith component of a point p on a ProductManifold M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#ManifoldsBase.injectivity_radius-Tuple{ProductManifold, Vararg{Any}}","page":"Product manifold","title":"ManifoldsBase.injectivity_radius","text":"injectivity_radius(M::ProductManifold)\ninjectivity_radius(M::ProductManifold, x)\n\nCompute the injectivity radius on the ProductManifold, which is the minimum of the factor manifolds.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#ManifoldsBase.inner-Tuple{ProductManifold, Any, Any, Any}","page":"Product manifold","title":"ManifoldsBase.inner","text":"inner(M::ProductManifold, p, X, Y)\n\ncompute the inner product of two tangent vectors X, Y from the tangent space at p on the ProductManifold M, which is just the sum of the internal manifolds that build M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#ManifoldsBase.inverse_retract-Tuple{ProductManifold, Any, Any, Any, Manifolds.InverseProductRetraction}","page":"Product manifold","title":"ManifoldsBase.inverse_retract","text":"inverse_retract(M::ProductManifold, p, q, m::InverseProductRetraction)\n\nCompute the inverse retraction from p with respect to q on the ProductManifold M using an InverseProductRetraction, which by default encapsulates a inverse retraction for each manifold of the product. Then this method is performed elementwise, so the encapsulated inverse retraction methods have to be available per factor.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#ManifoldsBase.is_flat-Tuple{ProductManifold}","page":"Product manifold","title":"ManifoldsBase.is_flat","text":"is_flat(::ProductManifold)\n\nReturn true if and only if all component manifolds of ProductManifold M are flat.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#ManifoldsBase.manifold_dimension-Tuple{ProductManifold}","page":"Product manifold","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::ProductManifold)\n\nReturn the manifold dimension of the ProductManifold, which is the sum of the manifold dimensions the product is made of.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#ManifoldsBase.retract-Tuple{ProductManifold, Vararg{Any}}","page":"Product manifold","title":"ManifoldsBase.retract","text":"retract(M::ProductManifold, p, X, m::ProductRetraction)\n\nCompute the retraction from p with tangent vector X on the ProductManifold M using an ProductRetraction, which by default encapsulates retractions of the base manifolds. Then this method is performed elementwise, so the encapsulated retractions method has to be one that is available on the manifolds.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#ManifoldsBase.riemann_tensor-Tuple{ProductManifold, Vararg{Any, 4}}","page":"Product manifold","title":"ManifoldsBase.riemann_tensor","text":"riemann_tensor(M::ProductManifold, p, X, Y, Z)\n\nCompute the Riemann tensor at point from p with tangent vectors X, Y and Z on the ProductManifold M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#ManifoldsBase.set_component!-Tuple{ProductManifold, Any, Any, Any}","page":"Product manifold","title":"ManifoldsBase.set_component!","text":"set_component!(M::ProductManifold, q, p, i)\n\nSet the ith component of a point q on a ProductManifold M to p, where p is a point on the AbstractManifold this factor of the product manifold consists of.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/product.html#ManifoldsBase.vector_transport_to-Tuple{ProductManifold, Any, Any, Any, ProductVectorTransport}","page":"Product manifold","title":"ManifoldsBase.vector_transport_to","text":"vector_transport_to(M::ProductManifold, p, X, q, m::ProductVectorTransport)\n\nCompute the vector transport the tangent vector Xat p to q on the ProductManifold M using an ProductVectorTransport m. This method is performed elementwise, i.e. the method m has to be implemented on the base manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/spdfixeddeterminant.html#SPDFixedDeterminantSection","page":"SPD, fixed determinant","title":"Symmetric positive definite matrices of fixed determinant","text":"","category":"section"},{"location":"manifolds/spdfixeddeterminant.html","page":"SPD, fixed determinant","title":"SPD, fixed determinant","text":"SPDFixedDeterminant","category":"page"},{"location":"manifolds/spdfixeddeterminant.html#Manifolds.SPDFixedDeterminant","page":"SPD, fixed determinant","title":"Manifolds.SPDFixedDeterminant","text":"SPDFixedDeterminant{N,D} <: AbstractDecoratorManifold{ℝ}\n\nThe manifold of symmetric positive definite matrices of fixed determinant d 0, i.e.\n\nmathcal P_d(n) =\nbigl\np ℝ^n n big a^mathrmTpa 0 text for all a ℝ^nbackslash0\n text and det(p) = d\nbigr\n\nThis manifold is modelled as a submanifold of SymmetricPositiveDefinite(n).\n\nThese matrices are sometimes also called isochoric, which refers to the interpretation of the matrix representing an ellipsoid. All ellipsoids that represent points on this manifold have the same volume.\n\nThe tangent space is modelled the same as for SymmetricPositiveDefinite(n) and consists of all symmetric matrices with zero trace\n\n T_pmathcal P_d(n) =\n bigl\n X in mathbb R^nn big X=X^mathrmT text and operatornametr(p) = 0\n bigr\n\nsince for a constant determinant we require that 0 = D\\det(p)[Z] = \\det(p)\\operatorname{tr}(p^{-1}Z) for all tangent vectors Z. Additionally we store the tangent vectors as X=p^{-1}Z, i.e. symmetric matrices.\n\nConstructor\n\nSPDFixedDeterminant(n::Int, d::Real=1.0)\n\ngenerates the manifold mathcal P_d(n) subset mathcal P(n) of determinant d, which defaults to 1.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/spdfixeddeterminant.html","page":"SPD, fixed determinant","title":"SPD, fixed determinant","text":"This manifold can is a submanifold of the symmetric positive definite matrices and hence inherits most properties therefrom.","category":"page"},{"location":"manifolds/spdfixeddeterminant.html","page":"SPD, fixed determinant","title":"SPD, fixed determinant","text":"The differences are the functions","category":"page"},{"location":"manifolds/spdfixeddeterminant.html","page":"SPD, fixed determinant","title":"SPD, fixed determinant","text":"Modules = [Manifolds]\nPages = [\"manifolds/SPDFixedDeterminant.jl\"]\nOrder = [:function]","category":"page"},{"location":"manifolds/spdfixeddeterminant.html#ManifoldsBase.check_point-Union{Tuple{n}, Tuple{SPDFixedDeterminant{n}, Any}} where n","page":"SPD, fixed determinant","title":"ManifoldsBase.check_point","text":"check_point(M::SPDFixedDeterminant{n}, p; kwargs...)\n\nCheck whether p is a valid manifold point on the SPDFixedDeterminant(n,d) M, i.e. whether p is a SymmetricPositiveDefinite matrix of size (n, n)\n\nwith determinant det(p) =M.d.\n\nThe tolerance for the determinant of p can be set using kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/spdfixeddeterminant.html#ManifoldsBase.check_vector-Tuple{SPDFixedDeterminant, Any, Any}","page":"SPD, fixed determinant","title":"ManifoldsBase.check_vector","text":"check_vector(M::SPDFixedDeterminant, p, X; kwargs... )\n\nCheck whether X is a tangent vector to manifold point p on the SPDFixedDeterminant M, i.e. X has to be a tangent vector on SymmetricPositiveDefinite, so a symmetric matrix, and additionally fulfill operatornametr(X) = 0.\n\nThe tolerance for the trace check of X can be set using kwargs..., which influences the isapprox-check.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/spdfixeddeterminant.html#ManifoldsBase.project-Tuple{SPDFixedDeterminant, Any, Any}","page":"SPD, fixed determinant","title":"ManifoldsBase.project","text":"Y = project(M::SPDFixedDeterminant{n}, p, X)\nproject!(M::SPDFixedDeterminant{n}, Y, p, X)\n\nProject the symmetric matrix X onto the tangent space at p of the (sub-)manifold of s.p.d. matrices of determinant M.d (in place of Y), by setting its diagonal (and hence its trace) to zero.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/spdfixeddeterminant.html#ManifoldsBase.project-Tuple{SPDFixedDeterminant, Any}","page":"SPD, fixed determinant","title":"ManifoldsBase.project","text":"q = project(M::SPDFixedDeterminant{n}, p)\nproject!(M::SPDFixedDeterminant{n}, q, p)\n\nProject the symmetric positive definite (s.p.d.) matrix p from the embedding onto the (sub-)manifold of s.p.d. matrices of determinant M.d (in place of q).\n\nThe formula reads\n\nq = Bigl(fracddet(p)Bigr)^frac1np\n\n\n\n\n\n","category":"method"},{"location":"features/distributions.html#Distributions","page":"Distributions","title":"Distributions","text":"","category":"section"},{"location":"features/distributions.html","page":"Distributions","title":"Distributions","text":"The following functions and types provide support for manifold-valued and tangent space-valued distributions:","category":"page"},{"location":"features/distributions.html","page":"Distributions","title":"Distributions","text":"Modules = [Manifolds]\nPages = [\"distributions.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"features/distributions.html#Manifolds.FVectorDistribution","page":"Distributions","title":"Manifolds.FVectorDistribution","text":"FVectorDistribution{TSpace<:VectorBundleFibers, T}\n\nAn abstract distribution for vector bundle fiber-valued distributions (values from a fiber of a vector bundle at point x from the given manifold). For example used for tangent vector-valued distributions.\n\n\n\n\n\n","category":"type"},{"location":"features/distributions.html#Manifolds.FVectorSupport","page":"Distributions","title":"Manifolds.FVectorSupport","text":"FVectorSupport(space::AbstractManifold, VectorBundleFibers)\n\nValue support for vector bundle fiber-valued distributions (values from a fiber of a vector bundle at a point from the given manifold). For example used for tangent vector-valued distributions.\n\n\n\n\n\n","category":"type"},{"location":"features/distributions.html#Manifolds.FVectorvariate","page":"Distributions","title":"Manifolds.FVectorvariate","text":"FVectorvariate\n\nStructure that subtypes VariateForm, indicating that a single sample is a vector from a fiber of a vector bundle.\n\n\n\n\n\n","category":"type"},{"location":"features/distributions.html#Manifolds.MPointDistribution","page":"Distributions","title":"Manifolds.MPointDistribution","text":"MPointDistribution{TM<:AbstractManifold}\n\nAn abstract distribution for points on manifold of type TM.\n\n\n\n\n\n","category":"type"},{"location":"features/distributions.html#Manifolds.MPointSupport","page":"Distributions","title":"Manifolds.MPointSupport","text":"MPointSupport(M::AbstractManifold)\n\nValue support for manifold-valued distributions (values from given AbstractManifold M).\n\n\n\n\n\n","category":"type"},{"location":"features/distributions.html#Manifolds.MPointvariate","page":"Distributions","title":"Manifolds.MPointvariate","text":"MPointvariate\n\nStructure that subtypes VariateForm, indicating that a single sample is a point on a manifold.\n\n\n\n\n\n","category":"type"},{"location":"features/distributions.html#Distributions.support-Tuple{T} where T<:Manifolds.FVectorDistribution","page":"Distributions","title":"Distributions.support","text":"support(d::FVectorDistribution)\n\nGet the object of type FVectorSupport for the distribution d.\n\n\n\n\n\n","category":"method"},{"location":"features/distributions.html","page":"Distributions","title":"Distributions","text":"Modules = [Manifolds]\nPages = [\"projected_distribution.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"features/distributions.html#Manifolds.ProjectedFVectorDistribution","page":"Distributions","title":"Manifolds.ProjectedFVectorDistribution","text":"ProjectedFVectorDistribution(type::VectorBundleFibers, p, d, project!)\n\nGenerates a random vector from ambient space of manifold type.manifold at point p and projects it to vector space of type type using function project!, see project for documentation. Generated arrays are of type TResult.\n\n\n\n\n\n","category":"type"},{"location":"features/distributions.html#Manifolds.ProjectedPointDistribution","page":"Distributions","title":"Manifolds.ProjectedPointDistribution","text":"ProjectedPointDistribution(M::AbstractManifold, d, proj!, p)\n\nGenerates a random point in ambient space of M and projects it to M using function proj!. Generated arrays are of type TResult, which can be specified by providing the p argument.\n\n\n\n\n\n","category":"type"},{"location":"features/distributions.html#Manifolds.normal_tvector_distribution-Tuple{AbstractManifold, Any, Any}","page":"Distributions","title":"Manifolds.normal_tvector_distribution","text":"normal_tvector_distribution(M::Euclidean, p, σ)\n\nNormal distribution in ambient space with standard deviation σ projected to tangent space at p.\n\n\n\n\n\n","category":"method"},{"location":"features/distributions.html#Manifolds.projected_distribution","page":"Distributions","title":"Manifolds.projected_distribution","text":"projected_distribution(M::AbstractManifold, d, [p=rand(d)])\n\nWrap the standard distribution d into a manifold-valued distribution. Generated points will be of similar type to p. By default, the type is not changed.\n\n\n\n\n\n","category":"function"},{"location":"manifolds/fixedrankmatrices.html#FixedRankMatrices","page":"Fixed-rank matrices","title":"Fixed-rank matrices","text":"","category":"section"},{"location":"manifolds/fixedrankmatrices.html","page":"Fixed-rank matrices","title":"Fixed-rank matrices","text":"Modules = [Manifolds]\nPages = [\"FixedRankMatrices.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/fixedrankmatrices.html#Manifolds.FixedRankMatrices","page":"Fixed-rank matrices","title":"Manifolds.FixedRankMatrices","text":"FixedRankMatrices{m,n,k,𝔽} <: AbstractDecoratorManifold{𝔽}\n\nThe manifold of m n real-valued or complex-valued matrices of fixed rank k, i.e.\n\nbigl p 𝔽^m n big operatornamerank(p) = kbigr\n\nwhere 𝔽 ℝℂ and the rank is the number of linearly independent columns of a matrix.\n\nRepresentation with 3 matrix factors\n\nA point p mathcal M can be stored using unitary matrices U 𝔽^m k, V 𝔽^n k as well as the k singular values of p = U_p S V_p^mathrmH, where cdot^mathrmH denotes the complex conjugate transpose or Hermitian. In other words, U and V are from the manifolds Stiefel(m,k,𝔽) and Stiefel(n,k,𝔽), respectively; see SVDMPoint for details.\n\nThe tangent space T_p mathcal M at a point p mathcal M with p=U_p S V_p^mathrmH is given by\n\nT_pmathcal M = bigl U_p M V_p^mathrmH + U_X V_p^mathrmH + U_p V_X^mathrmH \n M 𝔽^k k\n U_X 𝔽^m k\n V_X 𝔽^n k\n text st \n U_p^mathrmHU_X = 0_k\n V_p^mathrmHV_X = 0_k\nbigr\n\nwhere 0_k is the k k zero matrix. See UMVTVector for details.\n\nThe (default) metric of this manifold is obtained by restricting the metric on ℝ^m n to the tangent bundle [Van13].\n\nConstructor\n\nFixedRankMatrices(m, n, k[, field=ℝ])\n\nGenerate the manifold of m-by-n (field-valued) matrices of rank k.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/fixedrankmatrices.html#Manifolds.SVDMPoint","page":"Fixed-rank matrices","title":"Manifolds.SVDMPoint","text":"SVDMPoint <: AbstractManifoldPoint\n\nA point on a certain manifold, where the data is stored in a svd like fashion, i.e. in the form USV^mathrmH, where this structure stores U, S and V^mathrmH. The storage might also be shortened to just k singular values and accordingly shortened U (columns) and V^mathrmH (rows).\n\nConstructors\n\nSVDMPoint(A) for a matrix A, stores its svd factors (i.e. implicitly k=minmn)\nSVDMPoint(S) for an SVD object, stores its svd factors (i.e. implicitly k=minmn)\nSVDMPoint(U,S,Vt) for the svd factors to initialize the SVDMPoint(i.e. implicitlyk=\\min\\{m,n\\}`)\nSVDMPoint(A,k) for a matrix A, stores its svd factors shortened to the best rank k approximation\nSVDMPoint(S,k) for an SVD object, stores its svd factors shortened to the best rank k approximation\nSVDMPoint(U,S,Vt,k) for the svd factors to initialize the SVDMPoint, stores its svd factors shortened to the best rank k approximation\n\n\n\n\n\n","category":"type"},{"location":"manifolds/fixedrankmatrices.html#Manifolds.UMVTVector","page":"Fixed-rank matrices","title":"Manifolds.UMVTVector","text":"UMVTVector <: TVector\n\nA tangent vector that can be described as a product U_p M V_p^mathrmH + U_X V_p^mathrmH + U_p V_X^mathrmH, where X = U_X S V_X^mathrmH is its base point, see for example FixedRankMatrices.\n\nThe base point p is required for example embedding this point, but it is not stored. The fields of thie tangent vector are U for U_X, M and Vt to store V_X^mathrmH\n\nConstructors\n\nUMVTVector(U,M,Vt) store umv factors to initialize the UMVTVector\nUMVTVector(U,M,Vt,k) store the umv factors after shortening them down to inner dimensions k.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/fixedrankmatrices.html#Base.rand-Tuple{FixedRankMatrices}","page":"Fixed-rank matrices","title":"Base.rand","text":"Random.rand(M::FixedRankMatrices; vector_at=nothing, kwargs...)\n\nIf vector_at is nothing, return a random point on the FixedRankMatrices manifold. The orthogonal matrices are sampled from the Stiefel manifold and the singular values are sampled uniformly at random.\n\nIf vector_at is not nothing, generate a random tangent vector in the tangent space of the point vector_at on the FixedRankMatrices manifold M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/fixedrankmatrices.html#ManifoldDiff.riemannian_Hessian-Tuple{FixedRankMatrices, Vararg{Any, 4}}","page":"Fixed-rank matrices","title":"ManifoldDiff.riemannian_Hessian","text":"Y = riemannian_Hessian(M::FixedRankMatrices, p, G, H, X)\nriemannian_Hessian!(M::FixedRankMatrices, Y, p, G, H, X)\n\nCompute the Riemannian Hessian operatornameHess f(p)X given the Euclidean gradient f(tilde p) in G and the Euclidean Hessian ^2 f(tilde p)tilde X in H, where tilde p tilde X are the representations of pX in the embedding,.\n\nThe Riemannian Hessian can be computed as stated in Remark 4.1 [Ngu23] or Section 2.3 [Van13], that B. Vandereycken adopted for Manopt (Matlab).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/fixedrankmatrices.html#ManifoldsBase.check_point-Union{Tuple{k}, Tuple{n}, Tuple{m}, Tuple{FixedRankMatrices{m, n, k}, Any}} where {m, n, k}","page":"Fixed-rank matrices","title":"ManifoldsBase.check_point","text":"check_point(M::FixedRankMatrices{m,n,k}, p; kwargs...)\n\nCheck whether the matrix or SVDMPoint x ids a valid point on the FixedRankMatrices{m,n,k,𝔽} M, i.e. is an m-byn matrix of rank k. For the SVDMPoint the internal representation also has to have the right shape, i.e. p.U and p.Vt have to be unitary. The keyword arguments are passed to the rank function that verifies the rank of p.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/fixedrankmatrices.html#ManifoldsBase.check_vector-Union{Tuple{k}, Tuple{n}, Tuple{m}, Tuple{FixedRankMatrices{m, n, k}, SVDMPoint, UMVTVector}} where {m, n, k}","page":"Fixed-rank matrices","title":"ManifoldsBase.check_vector","text":"check_vector(M:FixedRankMatrices{m,n,k}, p, X; kwargs...)\n\nCheck whether the tangent UMVTVector X is from the tangent space of the SVDMPoint p on the FixedRankMatrices M, i.e. that v.U and v.Vt are (columnwise) orthogonal to x.U and x.Vt, respectively, and its dimensions are consistent with p and X.M, i.e. correspond to m-by-n matrices of rank k.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/fixedrankmatrices.html#ManifoldsBase.default_inverse_retraction_method-Tuple{FixedRankMatrices}","page":"Fixed-rank matrices","title":"ManifoldsBase.default_inverse_retraction_method","text":"default_inverse_retraction_method(M::FixedRankMatrices)\n\nReturn PolarInverseRetraction as the default inverse retraction for the FixedRankMatrices manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/fixedrankmatrices.html#ManifoldsBase.default_retraction_method-Tuple{FixedRankMatrices}","page":"Fixed-rank matrices","title":"ManifoldsBase.default_retraction_method","text":"default_retraction_method(M::FixedRankMatrices)\n\nReturn PolarRetraction as the default retraction for the FixedRankMatrices manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/fixedrankmatrices.html#ManifoldsBase.default_vector_transport_method-Tuple{FixedRankMatrices}","page":"Fixed-rank matrices","title":"ManifoldsBase.default_vector_transport_method","text":"default_vector_transport_method(M::FixedRankMatrices)\n\nReturn the ProjectionTransport as the default vector transport method for the FixedRankMatrices manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/fixedrankmatrices.html#ManifoldsBase.embed-Tuple{FixedRankMatrices, SVDMPoint, UMVTVector}","page":"Fixed-rank matrices","title":"ManifoldsBase.embed","text":"embed(M::FixedRankMatrices, p, X)\n\nEmbed the tangent vector X at point p in M from its UMVTVector representation into the set of mn matrices.\n\nThe formula reads\n\nU_pMV_p^mathrmH + U_XV_p^mathrmH + U_pV_X^mathrmH\n\n\n\n\n\n","category":"method"},{"location":"manifolds/fixedrankmatrices.html#ManifoldsBase.embed-Tuple{FixedRankMatrices, SVDMPoint}","page":"Fixed-rank matrices","title":"ManifoldsBase.embed","text":"embed(::FixedRankMatrices, p::SVDMPoint)\n\nEmbed the point p from its SVDMPoint representation into the set of mn matrices by computing USV^mathrmH.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/fixedrankmatrices.html#ManifoldsBase.injectivity_radius-Union{Tuple{FixedRankMatrices{m, n, k}}, Tuple{k}, Tuple{n}, Tuple{m}} where {m, n, k}","page":"Fixed-rank matrices","title":"ManifoldsBase.injectivity_radius","text":"injectivity_radius(::FixedRankMatrices)\n\nReturn the incjectivity radius of the manifold of FixedRankMatrices, i.e. 0. See [HU17].\n\n\n\n\n\n","category":"method"},{"location":"manifolds/fixedrankmatrices.html#ManifoldsBase.inner-Tuple{FixedRankMatrices, SVDMPoint, UMVTVector, UMVTVector}","page":"Fixed-rank matrices","title":"ManifoldsBase.inner","text":"inner(M::FixedRankMatrices, p::SVDMPoint, X::UMVTVector, Y::UMVTVector)\n\nCompute the inner product of X and Y in the tangent space of p on the FixedRankMatrices M, which is inherited from the embedding, i.e. can be computed using dot on the elements (U, Vt, M) of X and Y.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/fixedrankmatrices.html#ManifoldsBase.is_flat-Tuple{FixedRankMatrices}","page":"Fixed-rank matrices","title":"ManifoldsBase.is_flat","text":"is_flat(::FixedRankMatrices)\n\nReturn false. FixedRankMatrices is not a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/fixedrankmatrices.html#ManifoldsBase.manifold_dimension-Union{Tuple{FixedRankMatrices{m, n, k, 𝔽}}, Tuple{𝔽}, Tuple{k}, Tuple{n}, Tuple{m}} where {m, n, k, 𝔽}","page":"Fixed-rank matrices","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::FixedRankMatrices{m,n,k,𝔽})\n\nReturn the manifold dimension for the 𝔽-valued FixedRankMatrices M of dimension mxn of rank k, namely\n\ndim(mathcal M) = k(m + n - k) dim_ℝ 𝔽\n\nwhere dim_ℝ 𝔽 is the real_dimension of 𝔽.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/fixedrankmatrices.html#ManifoldsBase.project-Tuple{FixedRankMatrices, Any, Any}","page":"Fixed-rank matrices","title":"ManifoldsBase.project","text":"project(M, p, A)\n\nProject the matrix A ℝ^mn or from the embedding the tangent space at p on the FixedRankMatrices M, further decomposing the result into X=UMV^mathrmH, i.e. a UMVTVector.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/fixedrankmatrices.html#ManifoldsBase.representation_size-Union{Tuple{FixedRankMatrices{m, n}}, Tuple{n}, Tuple{m}} where {m, n}","page":"Fixed-rank matrices","title":"ManifoldsBase.representation_size","text":"representation_size(M::FixedRankMatrices{m,n,k})\n\nReturn the element size of a point on the FixedRankMatrices M, i.e. the size of matrices on this manifold (mn).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/fixedrankmatrices.html#ManifoldsBase.retract-Tuple{FixedRankMatrices, Any, Any, PolarRetraction}","page":"Fixed-rank matrices","title":"ManifoldsBase.retract","text":"retract(M, p, X, ::PolarRetraction)\n\nCompute an SVD-based retraction on the FixedRankMatrices M by computing\n\n q = U_kS_kV_k^mathrmH\n\nwhere U_k S_k V_k^mathrmH is the shortened singular value decomposition USV^mathrmH=p+X, in the sense that S_k is the diagonal matrix of size k k with the k largest singular values and U and V are shortened accordingly.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/fixedrankmatrices.html#ManifoldsBase.vector_transport_to!-Tuple{FixedRankMatrices, Any, Any, Any, ProjectionTransport}","page":"Fixed-rank matrices","title":"ManifoldsBase.vector_transport_to!","text":"vector_transport_to(M::FixedRankMatrices, p, X, q, ::ProjectionTransport)\n\nCompute the vector transport of the tangent vector X at p to q, using the project of X to q.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/fixedrankmatrices.html#ManifoldsBase.zero_vector-Union{Tuple{k}, Tuple{n}, Tuple{m}, Tuple{FixedRankMatrices{m, n, k}, SVDMPoint}} where {m, n, k}","page":"Fixed-rank matrices","title":"ManifoldsBase.zero_vector","text":"zero_vector(M::FixedRankMatrices, p::SVDMPoint)\n\nReturn a UMVTVector representing the zero tangent vector in the tangent space of p on the FixedRankMatrices M, for example all three elements of the resulting structure are zero matrices.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/fixedrankmatrices.html#Literature","page":"Fixed-rank matrices","title":"Literature","text":"","category":"section"},{"location":"manifolds/fixedrankmatrices.html","page":"Fixed-rank matrices","title":"Fixed-rank matrices","text":"
    [HU17]
    \n
    \n
    S. Hosseini and A. Uschmajew. A Riemannian Gradient Sampling Algorithm for Nonsmooth Optimization on Manifolds. SIAM J. Optim. 27, 173–189 (2017).
    \n
    [Ngu23]
    \n
    \n
    D. Nguyen. Operator-Valued Formulas for Riemannian Gradient and Hessian and Families of Tractable Metrics in Riemannian Optimization. Journal of Optimization Theory and Applications 198, 135–164 (2023), arXiv:2009.10159.
    \n
    [Van13]
    \n
    \n
    B. Vandereycken. Low-rank matrix completion by Riemannian optimization. SIAM Journal on Optimization 23, 1214–1236 (2013).
    \n
    \n
    ","category":"page"},{"location":"manifolds/stiefel.html#Stiefel","page":"Stiefel","title":"Stiefel","text":"","category":"section"},{"location":"manifolds/stiefel.html#Common-and-metric-independent-functions","page":"Stiefel","title":"Common and metric independent functions","text":"","category":"section"},{"location":"manifolds/stiefel.html","page":"Stiefel","title":"Stiefel","text":"Modules = [Manifolds]\nPages = [\"manifolds/Stiefel.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/stiefel.html#Manifolds.Stiefel","page":"Stiefel","title":"Manifolds.Stiefel","text":"Stiefel{n,k,𝔽} <: AbstractDecoratorManifold{𝔽}\n\nThe Stiefel manifold consists of all n k, n k unitary matrices, i.e.\n\noperatornameSt(nk) = bigl p 𝔽^n k big p^mathrmHp = I_k bigr\n\nwhere 𝔽 ℝ ℂ, cdot^mathrmH denotes the complex conjugate transpose or Hermitian, and I_k ℝ^k k denotes the k k identity matrix.\n\nThe tangent space at a point p mathcal M is given by\n\nT_p mathcal M = X 𝔽^n k p^mathrmHX + overlineX^mathrmHp = 0_k\n\nwhere 0_k is the k k zero matrix and overlinecdot the (elementwise) complex conjugate.\n\nThis manifold is modeled as an embedded manifold to the Euclidean, i.e. several functions like the inner product and the zero_vector are inherited from the embedding.\n\nThe manifold is named after Eduard L. Stiefel (1909–1978).\n\nConstructor\n\nStiefel(n, k, field = ℝ)\n\nGenerate the (real-valued) Stiefel manifold of n k dimensional orthonormal matrices.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/stiefel.html#Base.rand-Tuple{Stiefel}","page":"Stiefel","title":"Base.rand","text":"rand(::Stiefel; vector_at=nothing, σ::Real=1.0)\n\nWhen vector_at is nothing, return a random (Gaussian) point x on the Stiefel manifold M by generating a (Gaussian) matrix with standard deviation σ and return the orthogonalized version, i.e. return the Q component of the QR decomposition of the random matrix of size nk.\n\nWhen vector_at is not nothing, return a (Gaussian) random vector from the tangent space T_vector_atmathrmSt(nk) with mean zero and standard deviation σ by projecting a random Matrix onto the tangent vector at vector_at.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#Manifolds.uniform_distribution-Union{Tuple{k}, Tuple{n}, Tuple{Stiefel{n, k, ℝ}, Any}} where {n, k}","page":"Stiefel","title":"Manifolds.uniform_distribution","text":"uniform_distribution(M::Stiefel{n,k,ℝ}, p)\n\nUniform distribution on given (real-valued) Stiefel M. Specifically, this is the normalized Haar and Hausdorff measure on M. Generated points will be of similar type as p.\n\nThe implementation is based on Section 2.5.1 in [Chi03]; see also Theorem 2.2.1(iii) in [Chi03].\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.change_metric-Tuple{Stiefel, EuclideanMetric, Any, Any}","page":"Stiefel","title":"ManifoldsBase.change_metric","text":"change_metric(M::Stiefel, ::EuclideanMetric, p X)\n\nChange X to the corresponding vector with respect to the metric of the Stiefel M, which is just the identity, since the manifold is isometrically embedded.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.change_representer-Tuple{Stiefel, EuclideanMetric, Any, Any}","page":"Stiefel","title":"ManifoldsBase.change_representer","text":"change_representer(M::Stiefel, ::EuclideanMetric, p, X)\n\nChange X to the corresponding representer of a cotangent vector at p. Since the Stiefel manifold M, is isometrically embedded, this is the identity\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.check_point-Union{Tuple{𝔽}, Tuple{k}, Tuple{n}, Tuple{Stiefel{n, k, 𝔽}, Any}} where {n, k, 𝔽}","page":"Stiefel","title":"ManifoldsBase.check_point","text":"check_point(M::Stiefel, p; kwargs...)\n\nCheck whether p is a valid point on the Stiefel M=operatornameSt(nk), i.e. that it has the right AbstractNumbers type and p^mathrmHp is (approximately) the identity, where cdot^mathrmH is the complex conjugate transpose. The settings for approximately can be set with kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.check_vector-Union{Tuple{𝔽}, Tuple{k}, Tuple{n}, Tuple{Stiefel{n, k, 𝔽}, Any, Any}} where {n, k, 𝔽}","page":"Stiefel","title":"ManifoldsBase.check_vector","text":"check_vector(M::Stiefel, p, X; kwargs...)\n\nChecks whether X is a valid tangent vector at p on the Stiefel M=operatornameSt(nk), i.e. the AbstractNumbers fits and it (approximately) holds that p^mathrmHX + overlineX^mathrmHp = 0, where cdot^mathrmH denotes the Hermitian and overlinecdot the (elementwise) complex conjugate. The settings for approximately can be set with kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.default_inverse_retraction_method-Tuple{Stiefel}","page":"Stiefel","title":"ManifoldsBase.default_inverse_retraction_method","text":"default_inverse_retraction_method(M::Stiefel)\n\nReturn PolarInverseRetraction as the default inverse retraction for the Stiefel manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.default_retraction_method-Tuple{Stiefel}","page":"Stiefel","title":"ManifoldsBase.default_retraction_method","text":"default_retraction_method(M::Stiefel)\n\nReturn PolarRetraction as the default retraction for the Stiefel manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.default_vector_transport_method-Tuple{Stiefel}","page":"Stiefel","title":"ManifoldsBase.default_vector_transport_method","text":"default_vector_transport_method(M::Stiefel)\n\nReturn the DifferentiatedRetractionVectorTransport of the [PolarRetraction](PolarRetraction as the default vector transport method for the Stiefel manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.inverse_retract-Tuple{Stiefel, Any, Any, PolarInverseRetraction}","page":"Stiefel","title":"ManifoldsBase.inverse_retract","text":"inverse_retract(M::Stiefel, p, q, ::PolarInverseRetraction)\n\nCompute the inverse retraction based on a singular value decomposition for two points p, q on the Stiefel manifold M. This follows the folloing approach: From the Polar retraction we know that\n\noperatornameretr_p^-1q = qs - t\n\nif such a symmetric positive definite k k matrix exists. Since qs - t is also a tangent vector at p we obtain\n\np^mathrmHqs + s(p^mathrmHq)^mathrmH + 2I_k = 0\n\nwhich can either be solved by a Lyapunov approach or a continuous-time algebraic Riccati equation.\n\nThis implementation follows the Lyapunov approach.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.inverse_retract-Tuple{Stiefel, Any, Any, QRInverseRetraction}","page":"Stiefel","title":"ManifoldsBase.inverse_retract","text":"inverse_retract(M::Stiefel, p, q, ::QRInverseRetraction)\n\nCompute the inverse retraction based on a qr decomposition for two points p, q on the Stiefel manifold M and return the resulting tangent vector in X. The computation follows Algorithm 1 in [KFT13].\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.is_flat-Tuple{Stiefel}","page":"Stiefel","title":"ManifoldsBase.is_flat","text":"is_flat(M::Stiefel)\n\nReturn true if Stiefel M is one-dimensional.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.manifold_dimension-Union{Tuple{Stiefel{n, k, ℝ}}, Tuple{k}, Tuple{n}} where {n, k}","page":"Stiefel","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::Stiefel)\n\nReturn the dimension of the Stiefel manifold M=operatornameSt(nk𝔽). The dimension is given by\n\nbeginaligned\ndim mathrmSt(n k ℝ) = nk - frac12k(k+1)\ndim mathrmSt(n k ℂ) = 2nk - k^2\ndim mathrmSt(n k ℍ) = 4nk - k(2k-1)\nendaligned\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.representation_size-Union{Tuple{Stiefel{n, k}}, Tuple{k}, Tuple{n}} where {n, k}","page":"Stiefel","title":"ManifoldsBase.representation_size","text":"representation_size(M::Stiefel)\n\nReturns the representation size of the Stiefel M=operatornameSt(nk), i.e. (n,k), which is the matrix dimensions.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.retract-Tuple{Stiefel, Any, Any, CayleyRetraction}","page":"Stiefel","title":"ManifoldsBase.retract","text":"retract(::Stiefel, p, X, ::CayleyRetraction)\n\nCompute the retraction on the Stiefel that is based on the Cayley transform[Zhu16]. Using\n\n W_pX = operatornameP_pXp^mathrmH - pX^mathrmHoperatornameP_p\n quadtextwhere\n operatornameP_p = I - frac12pp^mathrmH\n\nthe formula reads\n\n operatornameretr_pX = Bigl(I - frac12W_pXBigr)^-1Bigl(I + frac12W_pXBigr)p\n\nIt is implemented as the case m=1 of the PadeRetraction.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.retract-Tuple{Stiefel, Any, Any, PadeRetraction}","page":"Stiefel","title":"ManifoldsBase.retract","text":"retract(M::Stiefel, p, X, ::PadeRetraction{m})\n\nCompute the retraction on the Stiefel manifold M based on the Padé approximation of order m [ZD18]. Let p_m and q_m be defined for any matrix A ℝ^nx as\n\n p_m(A) = sum_k=0^m frac(2m-k)m(2m)(m-k)fracA^kk\n\nand\n\n q_m(A) = sum_k=0^m frac(2m-k)m(2m)(m-k)frac(-A)^kk\n\nrespectively. Then the Padé approximation (of the matrix exponential exp(A)) reads\n\n r_m(A) = q_m(A)^-1p_m(A)\n\nDefining further\n\n W_pX = operatornameP_pXp^mathrmH - pX^mathrmHoperatornameP_p\n quadtextwhere \n operatornameP_p = I - frac12pp^mathrmH\n\nthe retraction reads\n\n operatornameretr_pX = r_m(W_pX)p\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.retract-Tuple{Stiefel, Any, Any, PolarRetraction}","page":"Stiefel","title":"ManifoldsBase.retract","text":"retract(M::Stiefel, p, X, ::PolarRetraction)\n\nCompute the SVD-based retraction PolarRetraction on the Stiefel manifold M. With USV = p + X the retraction reads\n\noperatornameretr_p X = UbarV^mathrmH\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.retract-Tuple{Stiefel, Any, Any, QRRetraction}","page":"Stiefel","title":"ManifoldsBase.retract","text":"retract(M::Stiefel, p, X, ::QRRetraction)\n\nCompute the QR-based retraction QRRetraction on the Stiefel manifold M. With QR = p + X the retraction reads\n\noperatornameretr_p X = QD\n\nwhere D is a n k matrix with\n\nD = operatornamediagbigl(operatornamesgn(R_ii+05)_i=1^k bigr)\n\nwhere operatornamesgn(p) = begincases 1 text for p 0\n0 text for p = 0\n-1 text for p 0 endcases\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.vector_transport_direction-Tuple{Stiefel, Any, Any, Any, DifferentiatedRetractionVectorTransport{CayleyRetraction}}","page":"Stiefel","title":"ManifoldsBase.vector_transport_direction","text":"vector_transport_direction(::Stiefel, p, X, d, ::DifferentiatedRetractionVectorTransport{CayleyRetraction})\n\nCompute the vector transport given by the differentiated retraction of the CayleyRetraction, cf. [Zhu16] Equation (17).\n\nThe formula reads\n\noperatornameT_pd(X) =\nBigl(I - frac12W_pdBigr)^-1W_pXBigl(I - frac12W_pdBigr)^-1p\n\nwith\n\n W_pX = operatornameP_pXp^mathrmH - pX^mathrmHoperatornameP_p\n quadtextwhere \n operatornameP_p = I - frac12pp^mathrmH\n\nSince this is the differentiated retraction as a vector transport, the result will be in the tangent space at q=operatornameretr_p(d) using the CayleyRetraction.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.vector_transport_direction-Tuple{Stiefel, Any, Any, Any, DifferentiatedRetractionVectorTransport{PolarRetraction}}","page":"Stiefel","title":"ManifoldsBase.vector_transport_direction","text":"vector_transport_direction(M::Stiefel, p, X, d, DifferentiatedRetractionVectorTransport{PolarRetraction})\n\nCompute the vector transport by computing the push forward of retract(::Stiefel, ::Any, ::Any, ::PolarRetraction) Section 3.5 of [Zhu16]:\n\nT_pd^textPol(X) = q*Λ + (I-qq^mathrmT)X(1+d^mathrmTd)^-frac12\n\nwhere q = operatornameretr^mathrmPol_p(d), and Λ is the unique solution of the Sylvester equation\n\n Λ(I+d^mathrmTd)^frac12 + (I + d^mathrmTd)^frac12 = q^mathrmTX - X^mathrmTq\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.vector_transport_direction-Tuple{Stiefel, Any, Any, Any, DifferentiatedRetractionVectorTransport{QRRetraction}}","page":"Stiefel","title":"ManifoldsBase.vector_transport_direction","text":"vector_transport_direction(M::Stiefel, p, X, d, DifferentiatedRetractionVectorTransport{QRRetraction})\n\nCompute the vector transport by computing the push forward of the retract(::Stiefel, ::Any, ::Any, ::QRRetraction), See [AMS08], p. 173, or Section 3.5 of [Zhu16].\n\nT_pd^textQR(X) = q*rho_mathrms(q^mathrmTXR^-1) + (I-qq^mathrmT)XR^-1\n\nwhere q = operatornameretr^mathrmQR_p(d), R is the R factor of the QR decomposition of p + d, and\n\nbigl( rho_mathrms(A) bigr)_ij\n= begincases\nA_ijtext if i j\n0 text if i = j\n-A_ji text if i j\nendcases\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.vector_transport_to-Tuple{Stiefel, Any, Any, Any, DifferentiatedRetractionVectorTransport{PolarRetraction}}","page":"Stiefel","title":"ManifoldsBase.vector_transport_to","text":"vector_transport_to(M::Stiefel, p, X, q, DifferentiatedRetractionVectorTransport{PolarRetraction})\n\nCompute the vector transport by computing the push forward of the retract(M::Stiefel, ::Any, ::Any, ::PolarRetraction), see Section 4 of [HGA15] or Section 3.5 of [Zhu16]:\n\nT_qgets p^textPol(X) = q*Λ + (I-qq^mathrmT)X(1+d^mathrmTd)^-frac12\n\nwhere d = bigl( operatornameretr^mathrmPol_pbigr)^-1(q), and Λ is the unique solution of the Sylvester equation\n\n Λ(I+d^mathrmTd)^frac12 + (I + d^mathrmTd)^frac12 = q^mathrmTX - X^mathrmTq\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.vector_transport_to-Tuple{Stiefel, Any, Any, Any, DifferentiatedRetractionVectorTransport{QRRetraction}}","page":"Stiefel","title":"ManifoldsBase.vector_transport_to","text":"vector_transport_to(M::Stiefel, p, X, q, DifferentiatedRetractionVectorTransport{QRRetraction})\n\nCompute the vector transport by computing the push forward of the retract(M::Stiefel, ::Any, ::Any, ::QRRetraction), see [AMS08], p. 173, or Section 3.5 of [Zhu16].\n\nT_q gets p^textQR(X) = q*rho_mathrms(q^mathrmTXR^-1) + (I-qq^mathrmT)XR^-1\n\nwhere d = bigl(operatornameretr^mathrmQRbigr)^-1_p(q), R is the R factor of the QR decomposition of p+X, and\n\nbigl( rho_mathrms(A) bigr)_ij\n= begincases\nA_ijtext if i j\n0 text if i = j\n-A_ji text if i j\nendcases\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.vector_transport_to-Tuple{Stiefel, Any, Any, Any, ProjectionTransport}","page":"Stiefel","title":"ManifoldsBase.vector_transport_to","text":"vector_transport_to(M::Stiefel, p, X, q, ::ProjectionTransport)\n\nCompute a vector transport by projection, i.e. project X from the tangent space at p by projection it onto the tangent space at q.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#Default-metric:-the-Euclidean-metric","page":"Stiefel","title":"Default metric: the Euclidean metric","text":"","category":"section"},{"location":"manifolds/stiefel.html","page":"Stiefel","title":"Stiefel","text":"The EuclideanMetric is obtained from the embedding of the Stiefel manifold in ℝ^nk.","category":"page"},{"location":"manifolds/stiefel.html","page":"Stiefel","title":"Stiefel","text":"Modules = [Manifolds]\nPages = [\"manifolds/StiefelEuclideanMetric.jl\"]\nOrder = [:function]","category":"page"},{"location":"manifolds/stiefel.html#Base.exp-Tuple{Stiefel, Vararg{Any}}","page":"Stiefel","title":"Base.exp","text":"exp(M::Stiefel, p, X)\n\nCompute the exponential map on the Stiefel{n,k,𝔽}() manifold M emanating from p in tangent direction X.\n\nexp_p X = beginpmatrix\n pX\n endpmatrix\n operatornameExp\n left(\n beginpmatrix p^mathrmHX - X^mathrmHX\n I_n p^mathrmHXendpmatrix\n right)\nbeginpmatrix exp( -p^mathrmHX) 0_nendpmatrix\n\nwhere operatornameExp denotes matrix exponential, cdot^mathrmH denotes the complex conjugate transpose or Hermitian, and I_k and 0_k are the identity matrix and the zero matrix of dimension k k, respectively.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldDiff.riemannian_Hessian-Tuple{Stiefel, Vararg{Any, 4}}","page":"Stiefel","title":"ManifoldDiff.riemannian_Hessian","text":"Y = riemannian_Hessian(M::Stiefel, p, G, H, X)\nriemannian_Hessian!(M::Stiefel, Y, p, G, H, X)\n\nCompute the Riemannian Hessian operatornameHess f(p)X given the Euclidean gradient f(tilde p) in G and the Euclidean Hessian ^2 f(tilde p)tilde X in H, where tilde p tilde X are the representations of pX in the embedding,.\n\nHere, we adopt Eq. (5.6) [Ngu23], where we use for the EuclideanMetric α_0=α_1=1 in their formula. Then the formula reads\n\n operatornameHessf(p)X\n =\n operatornameproj_T_pmathcal MBigl(\n ^2f(p)X - frac12 X bigl((f(p))^mathrmHp + p^mathrmHf(p)bigr)\n Bigr)\n\nCompared to Eq. (5.6) also the metric conversion simplifies to the identity.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.Weingarten-Tuple{Stiefel, Any, Any, Any}","page":"Stiefel","title":"ManifoldsBase.Weingarten","text":"Weingarten(M::Stiefel, p, X, V)\n\nCompute the Weingarten map mathcal W_p at p on the Stiefel M with respect to the tangent vector X in T_pmathcal M and the normal vector V in N_pmathcal M.\n\nThe formula is due to [AMT13] given by\n\nmathcal W_p(XV) = -Xp^mathrmHV - frac12pbigl(X^mathrmHV + V^mathrmHXbigr)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.get_basis-Union{Tuple{k}, Tuple{n}, Tuple{Stiefel{n, k, ℝ}, Any, DefaultOrthonormalBasis{ℝ, ManifoldsBase.TangentSpaceType}}} where {n, k}","page":"Stiefel","title":"ManifoldsBase.get_basis","text":"get_basis(M::Stiefel{n,k,ℝ}, p, B::DefaultOrthonormalBasis) where {n,k}\n\nCreate the default basis using the parametrization for any X T_pmathcal M. Set p_bot in ℝ^ntimes(n-k) the matrix such that the ntimes n matrix of the common columns p p_bot is an ONB. For any skew symmetric matrix a ℝ^ktimes k and any b ℝ^(n-k)times k the matrix\n\nX = pa + p_bot b T_pmathcal M\n\nand we can use the frac12k(k-1) + (n-k)k = nk-frac12k(k+1) entries of a and b to specify a basis for the tangent space. using unit vectors for constructing both the upper matrix of a to build a skew symmetric matrix and the matrix b, the default basis is constructed.\n\nSince p p_bot is an automorphism on ℝ^ntimes p the elements of a and b are orthonormal coordinates for the tangent space. To be precise exactly one element in the upper trangular entries of a is set to 1 its symmetric entry to -1 and we normalize with the factor frac1sqrt2 and for b one can just use unit vectors reshaped to a matrix to obtain orthonormal set of parameters.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.inverse_retract-Tuple{Stiefel, Any, Any, ProjectionInverseRetraction}","page":"Stiefel","title":"ManifoldsBase.inverse_retract","text":"inverse_retract(M::Stiefel, p, q, method::ProjectionInverseRetraction)\n\nCompute a projection-based inverse retraction.\n\nThe inverse retraction is computed by projecting the logarithm map in the embedding to the tangent space at p.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.project-Tuple{Stiefel, Any, Any}","page":"Stiefel","title":"ManifoldsBase.project","text":"project(M::Stiefel,p)\n\nProjects p from the embedding onto the Stiefel M, i.e. compute q as the polar decomposition of p such that q^mathrmHq is the identity, where cdot^mathrmH denotes the hermitian, i.e. complex conjugate transposed.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.project-Tuple{Stiefel, Vararg{Any}}","page":"Stiefel","title":"ManifoldsBase.project","text":"project(M::Stiefel, p, X)\n\nProject X onto the tangent space of p to the Stiefel manifold M. The formula reads\n\noperatornameproj_T_pmathcal M(X) = X - p operatornameSym(p^mathrmHX)\n\nwhere operatornameSym(q) is the symmetrization of q, e.g. by operatornameSym(q) = fracq^mathrmH+q2.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.retract-Tuple{Stiefel, Any, Any, ProjectionRetraction}","page":"Stiefel","title":"ManifoldsBase.retract","text":"retract(M::Stiefel, p, X, method::ProjectionRetraction)\n\nCompute a projection-based retraction.\n\nThe retraction is computed by projecting the exponential map in the embedding to M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#The-canonical-metric","page":"Stiefel","title":"The canonical metric","text":"","category":"section"},{"location":"manifolds/stiefel.html","page":"Stiefel","title":"Stiefel","text":"Any XT_pmathcal M, pmathcal M, can be written as","category":"page"},{"location":"manifolds/stiefel.html","page":"Stiefel","title":"Stiefel","text":"X = pA + (I_n-pp^mathrmT)B\nquad\nA ℝ^pp text skew-symmetric\nquad\nB ℝ^np text arbitrary","category":"page"},{"location":"manifolds/stiefel.html","page":"Stiefel","title":"Stiefel","text":"In the EuclideanMetric, the elements from A are counted twice (i.e. weighted with a factor of 2). The canonical metric avoids this.","category":"page"},{"location":"manifolds/stiefel.html","page":"Stiefel","title":"Stiefel","text":"Modules = [Manifolds]\nPages = [\"manifolds/StiefelCanonicalMetric.jl\"]\nOrder = [:type]","category":"page"},{"location":"manifolds/stiefel.html#Manifolds.ApproximateLogarithmicMap","page":"Stiefel","title":"Manifolds.ApproximateLogarithmicMap","text":"ApproximateLogarithmicMap <: ApproximateInverseRetraction\n\nAn approximate implementation of the logarithmic map, which is an inverse_retraction. See inverse_retract(::MetricManifold{ℝ,Stiefel{n,k,ℝ},CanonicalMetric}, ::Any, ::Any, ::ApproximateLogarithmicMap) where {n,k} for a use case.\n\nFields\n\nmax_iterations – maximal number of iterations used in the approximation\ntolerance – a tolerance used as a stopping criterion\n\n\n\n\n\n","category":"type"},{"location":"manifolds/stiefel.html#Manifolds.CanonicalMetric","page":"Stiefel","title":"Manifolds.CanonicalMetric","text":"CanonicalMetric <: AbstractMetric\n\nThe Canonical Metric refers to a metric for the Stiefel manifold, see[EAS98].\n\n\n\n\n\n","category":"type"},{"location":"manifolds/stiefel.html","page":"Stiefel","title":"Stiefel","text":"Modules = [Manifolds]\nPages = [\"manifolds/StiefelCanonicalMetric.jl\"]\nOrder = [:function]","category":"page"},{"location":"manifolds/stiefel.html#Base.exp-Union{Tuple{k}, Tuple{n}, Tuple{MetricManifold{ℝ, Stiefel{n, k, ℝ}, CanonicalMetric}, Vararg{Any}}} where {n, k}","page":"Stiefel","title":"Base.exp","text":"q = exp(M::MetricManifold{ℝ, Stiefel{n,k,ℝ}, CanonicalMetric}, p, X)\nexp!(M::MetricManifold{ℝ, Stiefel{n,k,ℝ}, q, CanonicalMetric}, p, X)\n\nCompute the exponential map on the Stiefel(n,k) manifold with respect to the CanonicalMetric.\n\nFirst, decompose The tangent vector X into its horizontal and vertical component with respect to p, i.e.\n\nX = pp^mathrmTX + (I_n-pp^mathrmT)X\n\nwhere I_n is the ntimes n identity matrix. We introduce A=p^mathrmTX and QR = (I_n-pp^mathrmT)X the qr decomposition of the vertical component. Then using the matrix exponential operatornameExp we introduce B and C as\n\nbeginpmatrix\nBC\nendpmatrix\ncoloneqq\noperatornameExpleft(\nbeginpmatrix\nA -R^mathrmT R 0\nendpmatrix\nright)\nbeginpmatrixI_k0endpmatrix\n\nthe exponential map reads\n\nq = exp_p X = pC + QB\n\nFor more details, see [EAS98][Zim17].\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldDiff.riemannian_Hessian-Union{Tuple{𝔽}, Tuple{k}, Tuple{n}, Tuple{MetricManifold{𝔽, Stiefel{n, k, 𝔽}, CanonicalMetric}, Vararg{Any, 4}}} where {n, k, 𝔽}","page":"Stiefel","title":"ManifoldDiff.riemannian_Hessian","text":"Y = riemannian_Hessian(M::MetricManifold{ℝ, Stiefel{n,k}, CanonicalMetric}, p, G, H, X)\nriemannian_Hessian!(M::MetricManifold{ℝ, Stiefel{n,k}, CanonicalMetric}, Y, p, G, H, X)\n\nCompute the Riemannian Hessian operatornameHess f(p)X given the Euclidean gradient f(tilde p) in G and the Euclidean Hessian ^2 f(tilde p)tilde X in H, where tilde p tilde X are the representations of pX in the embedding,.\n\nHere, we adopt Eq. (5.6) [Ngu23], for the CanonicalMetric α_0=1 α_1=frac12 in their formula. The formula reads\n\n operatornameHessf(p)X\n =\n operatornameproj_T_pmathcal MBigl(\n ^2f(p)X - frac12 X bigl( (f(p))^mathrmHp + p^mathrmHf(p)bigr)\n - frac12 bigl( P f(p) p^mathrmH + p f(p))^mathrmH P)X\n Bigr)\n\nwhere P = I-pp^mathrmH.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.inner-Union{Tuple{k}, Tuple{n}, Tuple{MetricManifold{ℝ, Stiefel{n, k, ℝ}, CanonicalMetric}, Any, Any, Any}} where {n, k}","page":"Stiefel","title":"ManifoldsBase.inner","text":"inner(M::MetricManifold{ℝ, Stiefel{n,k,ℝ}, X, CanonicalMetric}, p, X, Y)\n\nCompute the inner product on the Stiefel manifold with respect to the CanonicalMetric. The formula reads\n\ng_p(XY) = operatornametrbigl( X^mathrmT(I_n - frac12pp^mathrmT)Y bigr)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.inverse_retract-Union{Tuple{k}, Tuple{n}, Tuple{MetricManifold{ℝ, Stiefel{n, k, ℝ}, CanonicalMetric}, Any, Any, ApproximateLogarithmicMap}} where {n, k}","page":"Stiefel","title":"ManifoldsBase.inverse_retract","text":"X = inverse_retract(M::MetricManifold{ℝ, Stiefel{n,k,ℝ}, CanonicalMetric}, p, q, a::ApproximateLogarithmicMap)\ninverse_retract!(M::MetricManifold{ℝ, Stiefel{n,k,ℝ}, X, CanonicalMetric}, p, q, a::ApproximateLogarithmicMap)\n\nCompute an approximation to the logarithmic map on the Stiefel(n,k) manifold with respect to the CanonicalMetric using a matrix-algebraic based approach to an iterative inversion of the formula of the exp.\n\nThe algorithm is derived in [Zim17] and it uses the max_iterations and the tolerance field from the ApproximateLogarithmicMap.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#The-submersion-or-normal-metric","page":"Stiefel","title":"The submersion or normal metric","text":"","category":"section"},{"location":"manifolds/stiefel.html","page":"Stiefel","title":"Stiefel","text":"Modules = [Manifolds]\nPages = [\"manifolds/StiefelSubmersionMetric.jl\"]\nOrder = [:type, :function]\nPublic = true\nPrivate = false","category":"page"},{"location":"manifolds/stiefel.html#Manifolds.StiefelSubmersionMetric","page":"Stiefel","title":"Manifolds.StiefelSubmersionMetric","text":"StiefelSubmersionMetric{T<:Real} <: RiemannianMetric\n\nThe submersion (or normal) metric family on the Stiefel manifold.\n\nThe family, with a single real parameter α-1, has two special cases:\n\nα = -frac12: EuclideanMetric\nα = 0: CanonicalMetric\n\nThe family was described in [HML21]. This implementation follows the description in [ZH22].\n\nConstructor\n\nStiefelSubmersionMetric(α)\n\nConstruct the submersion metric on the Stiefel manifold with the parameter α.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/stiefel.html#Base.exp-Union{Tuple{k}, Tuple{n}, Tuple{MetricManifold{ℝ, Stiefel{n, k, ℝ}, <:StiefelSubmersionMetric}, Vararg{Any}}} where {n, k}","page":"Stiefel","title":"Base.exp","text":"q = exp(M::MetricManifold{ℝ, Stiefel{n,k,ℝ}, <:StiefelSubmersionMetric}, p, X)\nexp!(M::MetricManifold{ℝ, Stiefel{n,k,ℝ}, q, <:StiefelSubmersionMetric}, p, X)\n\nCompute the exponential map on the Stiefel(n,k) manifold with respect to the StiefelSubmersionMetric.\n\nThe exponential map is given by\n\nexp_p X = operatornameExpbigl(\n -frac2α+1α+1 p p^mathrmT X p^mathrmT +\n X p^mathrmT - p X^mathrmT\nbigr) p operatornameExpbigl(fracalphaalpha+1 p^mathrmT Xbigr)\n\nThis implementation is based on [ZH22].\n\nFor k fracn2 the exponential is computed more efficiently using StiefelFactorization.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#Base.log-Union{Tuple{k}, Tuple{n}, Tuple{MetricManifold{ℝ, Stiefel{n, k, ℝ}, <:StiefelSubmersionMetric}, Any, Any}} where {n, k}","page":"Stiefel","title":"Base.log","text":"log(M::MetricManifold{ℝ,Stiefel{n,k,ℝ},<:StiefelSubmersionMetric}, p, q; kwargs...)\n\nCompute the logarithmic map on the Stiefel(n,k) manifold with respect to the StiefelSubmersionMetric.\n\nThe logarithmic map is computed using ShootingInverseRetraction. For k lfloorfracn2rfloor, this is sped up using the k-shooting method of [ZH22]. Keyword arguments are forwarded to ShootingInverseRetraction; see that documentation for details. Their defaults are:\n\nnum_transport_points=4\ntolerance=sqrt(eps())\nmax_iterations=1_000\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldDiff.riemannian_Hessian-Union{Tuple{k}, Tuple{n}, Tuple{MetricManifold{ℝ, Stiefel{n, k, ℝ}, <:StiefelSubmersionMetric}, Vararg{Any, 4}}} where {n, k}","page":"Stiefel","title":"ManifoldDiff.riemannian_Hessian","text":"Y = riemannian_Hessian(M::MetricManifold{ℝ,Stiefel{n,k,ℝ}, StiefelSubmersionMetric},, p, G, H, X)\nriemannian_Hessian!(MetricManifold{ℝ,Stiefel{n,k,ℝ}, StiefelSubmersionMetric},, Y, p, G, H, X)\n\nCompute the Riemannian Hessian operatornameHess f(p)X given the Euclidean gradient f(tilde p) in G and the Euclidean Hessian ^2 f(tilde p)tilde X in H, where tilde p tilde X are the representations of pX in the embedding,.\n\nHere, we adopt Eq. (5.6) [Ngu23], for the CanonicalMetric α_0=1 α_1=frac12 in their formula. The formula reads\n\n operatornameHessf(p)X\n =\n operatornameproj_T_pmathcal MBigl(\n ^2f(p)X - frac12 X bigl( (f(p))^mathrmHp + p^mathrmHf(p)bigr)\n - frac2α+12(α+1) bigl( P f(p) p^mathrmH + p f(p))^mathrmH P)X\n Bigr)\n\nwhere P = I-pp^mathrmH.\n\nCompared to Eq. (5.6) we have that their α_0 = 1and alpha_1 = frac2α+12(α+1) + 1.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.inner-Union{Tuple{k}, Tuple{n}, Tuple{MetricManifold{ℝ, Stiefel{n, k, ℝ}, <:StiefelSubmersionMetric}, Any, Any, Any}} where {n, k}","page":"Stiefel","title":"ManifoldsBase.inner","text":"inner(M::MetricManifold{ℝ, Stiefel{n,k,ℝ}, X, <:StiefelSubmersionMetric}, p, X, Y)\n\nCompute the inner product on the Stiefel manifold with respect to the StiefelSubmersionMetric. The formula reads\n\ng_p(XY) = operatornametrbigl( X^mathrmT(I_n - frac2α+12(α+1)pp^mathrmT)Y bigr)\n\nwhere α is the parameter of the metric.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#ManifoldsBase.inverse_retract-Tuple{MetricManifold{ℝ, <:Stiefel, <:StiefelSubmersionMetric}, Any, Any, ShootingInverseRetraction}","page":"Stiefel","title":"ManifoldsBase.inverse_retract","text":"inverse_retract(\n M::MetricManifold{ℝ,Stiefel{n,k,ℝ},<:StiefelSubmersionMetric},\n p,\n q,\n method::ShootingInverseRetraction,\n)\n\nCompute the inverse retraction using ShootingInverseRetraction.\n\nIn general the retraction is computed using the generic shooting method.\n\ninverse_retract(\n M::MetricManifold{ℝ,Stiefel{n,k,ℝ},<:StiefelSubmersionMetric},\n p,\n q,\n method::ShootingInverseRetraction{\n ExponentialRetraction,\n ProjectionInverseRetraction,\n <:Union{ProjectionTransport,ScaledVectorTransport{ProjectionTransport}},\n },\n)\n\nCompute the inverse retraction using ShootingInverseRetraction more efficiently.\n\nFor k fracn2 the retraction is computed more efficiently using StiefelFactorization.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#Internal-types-and-functions","page":"Stiefel","title":"Internal types and functions","text":"","category":"section"},{"location":"manifolds/stiefel.html","page":"Stiefel","title":"Stiefel","text":"Modules = [Manifolds]\nPages = [\"manifolds/StiefelSubmersionMetric.jl\"]\nOrder = [:type, :function]\nPublic = false\nPrivate = true","category":"page"},{"location":"manifolds/stiefel.html#Manifolds.StiefelFactorization","page":"Stiefel","title":"Manifolds.StiefelFactorization","text":"StiefelFactorization{UT,XT} <: AbstractManifoldPoint\n\nRepresent points (and vectors) on Stiefel(n, k) with 2k k factors [ZH22].\n\nGiven a point p mathrmSt(n k) and another matrix B ℝ^n k for k lfloorfracn2rfloor the factorization is\n\nbeginaligned\nB = UZ\nU = beginbmatrixp Qendbmatrix mathrmSt(n 2k)\nZ = beginbmatrixZ_1 Z_2endbmatrix quad Z_1Z_2 ℝ^k k\nendaligned\n\nIf B mathrmSt(n k), then Z mathrmSt(2k k). Note that not every matrix B can be factorized in this way.\n\nFor a fixed U, if r mathrmSt(n k) has the factor Z_r mathrmSt(2k k), then X_r T_r mathrmSt(n k) has the factor Z_X_r T_Z_r mathrmSt(2k k).\n\nQ is determined by choice of a second matrix A ℝ^n k with the decomposition\n\nbeginaligned\nA = UZ\nZ_1 = p^mathrmT A \nQ Z_2 = (I - p p^mathrmT) A\nendaligned\n\nwhere here Q Z_2 is the any decomposition that produces Q mathrmSt(n k), for which we choose the QR decomposition.\n\nThis factorization is useful because it is closed under addition, subtraction, scaling, projection, and the Riemannian exponential and logarithm under the StiefelSubmersionMetric. That is, if all matrices involved are factorized to have the same U, then all of these operations and any algorithm that depends only on them can be performed in terms of the 2k k matrices Z. For n k, this can be much more efficient than working with the full matrices.\n\nwarning: Warning\nThis type is intended strictly for internal use and should not be directly used.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/stiefel.html#Manifolds.stiefel_factorization-Tuple{Any, Any}","page":"Stiefel","title":"Manifolds.stiefel_factorization","text":"stiefel_factorization(p, x) -> StiefelFactorization\n\nCompute the StiefelFactorization of x relative to the point p.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/stiefel.html#Literature","page":"Stiefel","title":"Literature","text":"","category":"section"},{"location":"manifolds/stiefel.html","page":"Stiefel","title":"Stiefel","text":"
    [AMT13]
    \n
    \n\n
    [AMS08]
    \n
    \n
    P.-A. Absil, R. Mahony and R. Sepulchre. Optimization Algorithms on Matrix Manifolds. Princeton University Press (2008), available online at [press.princeton.edu/chapters/absil/](http://press.princeton.edu/chapters/absil/).
    \n
    [Chi03]
    \n
    \n
    Y. Chikuse. Statistics on Special Manifolds. Springer New York (2003).
    \n
    [EAS98]
    \n
    \n
    A. Edelman, T. A. Arias and S. T. Smith. The Geometry of Algorithms with Orthogonality Constraints. SIAM Journal on Matrix Analysis and Applications 20, 303–353 (1998), arXiv:806030.
    \n
    [HGA15]
    \n
    \n
    W. Huang, K. A. Gallivan and P.-A. Absil. A Broyden Class of Quasi-Newton Methods for Riemannian Optimization. SIAM Journal on Optimization 25, 1660–1685 (2015).
    \n
    [HML21]
    \n
    \n
    K. Hüper, I. Markina and F. S. Leite. A Lagrangian approach to extremal curves on Stiefel manifolds. Journal of Geometric Mechanics 13, 55 (2021).
    \n
    [KFT13]
    \n
    \n
    T. Kaneko, S. Fiori and T. Tanaka. Empirical Arithmetic Averaging Over the Compact Stiefel Manifold. IEEE Transactions on Signal Processing 61, 883–894 (2013).
    \n
    [Ngu23]
    \n
    \n
    D. Nguyen. Operator-Valued Formulas for Riemannian Gradient and Hessian and Families of Tractable Metrics in Riemannian Optimization. Journal of Optimization Theory and Applications 198, 135–164 (2023), arXiv:2009.10159.
    \n
    [Zhu16]
    \n
    \n
    X. Zhu. A Riemannian conjugate gradient method for optimization on the Stiefel manifold. Computational Optimization and Applications 67, 73–110 (2016).
    \n
    [ZD18]
    \n
    \n
    X. Zhu and C. Duan. On matrix exponentials and their approximations related to optimization on the Stiefel manifold. Optimization Letters 13, 1069–1083 (2018).
    \n
    [Zim17]
    \n
    \n
    R. Zimmermann. A Matrix-Algebraic Algorithm for the Riemannian Logarithm on the Stiefel Manifold under the Canonical Metric. SIAM J. Matrix Anal. Appl. 38, 322–342 (2017), arXiv:1604.05054.
    \n
    [ZH22]
    \n
    \n
    R. Zimmermann and K. Hüper. Computing the Riemannian Logarithm on the Stiefel Manifold: Metrics, Methods, and Performance. SIAM Journal on Matrix Analysis and Applications 43, 953-980 (2022), arXiv:2103.12046.
    \n
    \n
    ","category":"page"},{"location":"manifolds/circle.html#Circle","page":"Circle","title":"Circle","text":"","category":"section"},{"location":"manifolds/circle.html","page":"Circle","title":"Circle","text":"Modules = [Manifolds]\nPages = [\"manifolds/Circle.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/circle.html#Manifolds.Circle","page":"Circle","title":"Manifolds.Circle","text":"Circle{𝔽} <: AbstractManifold{𝔽}\n\nThe circle 𝕊^1 is a manifold here represented by real-valued points in -ππ) or complex-valued points z ℂ of absolute value lvert zrvert = 1.\n\nConstructor\n\nCircle(𝔽=ℝ)\n\nGenerate the ℝ-valued Circle represented by angles, which alternatively can be set to use the AbstractNumbers 𝔽=ℂ to obtain the circle represented by ℂ-valued circle of unit numbers.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/circle.html#Base.exp-Tuple{Circle, Vararg{Any}}","page":"Circle","title":"Base.exp","text":"exp(M::Circle, p, X)\n\nCompute the exponential map on the Circle.\n\nexp_p X = (p+X)_2π\n\nwhere (cdot)_2π is the (symmetric) remainder with respect to division by 2π, i.e. in -ππ).\n\nFor the complex-valued case, the same formula as for the Sphere 𝕊^1 is applied to values in the complex plane.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/circle.html#Base.log-Tuple{Circle, Vararg{Any}}","page":"Circle","title":"Base.log","text":"log(M::Circle, p, q)\n\nCompute the logarithmic map on the Circle M.\n\nlog_p q = (q-p)_2π\n\nwhere (cdot)_2π is the (symmetric) remainder with respect to division by 2π, i.e. in -ππ).\n\nFor the complex-valued case, the same formula as for the Sphere 𝕊^1 is applied to values in the complex plane.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/circle.html#Base.rand-Tuple{Circle}","page":"Circle","title":"Base.rand","text":"Random.rand(M::Circle{ℝ}; vector_at = nothing, σ::Real=1.0)\n\nIf vector_at is nothing, return a random point on the Circle mathbb S^1 by picking a random element from -pipi) uniformly.\n\nIf vector_at is not nothing, return a random tangent vector from the tangent space of the point vector_at on the Circle by using a normal distribution with mean 0 and standard deviation σ.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/circle.html#Manifolds.complex_dot-Tuple{Any, Any}","page":"Circle","title":"Manifolds.complex_dot","text":"complex_dot(a, b)\n\nCompute the inner product of two (complex) numbers with in the complex plane.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/circle.html#Manifolds.manifold_volume-Tuple{Circle}","page":"Circle","title":"Manifolds.manifold_volume","text":"manifold_volume(M::Circle)\n\nReturn the volume of the Circle M, i.e. 2π.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/circle.html#Manifolds.sym_rem-Union{Tuple{N}, Tuple{N, Any}} where N<:Number","page":"Circle","title":"Manifolds.sym_rem","text":"sym_rem(x,[T=π])\n\nCompute symmetric remainder of x with respect to the interall 2*T, i.e. (x+T)%2T, where the default for T is π\n\n\n\n\n\n","category":"method"},{"location":"manifolds/circle.html#Manifolds.volume_density-Tuple{Circle, Any, Any}","page":"Circle","title":"Manifolds.volume_density","text":"volume_density(::Circle, p, X)\n\nReturn volume density of Circle, i.e. 1.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/circle.html#ManifoldsBase.check_point-Tuple{Circle, Vararg{Any}}","page":"Circle","title":"ManifoldsBase.check_point","text":"check_point(M::Circle, p)\n\nCheck whether p is a point on the Circle M. For the real-valued case, p is an angle and hence it checks that p -ππ). for the complex-valued case, it is a unit number, p ℂ with lvert p rvert = 1.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/circle.html#ManifoldsBase.check_vector-Tuple{Circle{ℝ}, Vararg{Any}}","page":"Circle","title":"ManifoldsBase.check_vector","text":"check_vector(M::Circle, p, X; kwargs...)\n\nCheck whether X is a tangent vector in the tangent space of p on the Circle M. For the real-valued case represented by angles, all X are valid, since the tangent space is the whole real line. For the complex-valued case X has to lie on the line parallel to the tangent line at p in the complex plane, i.e. their inner product has to be zero.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/circle.html#ManifoldsBase.distance-Tuple{Circle, Vararg{Any}}","page":"Circle","title":"ManifoldsBase.distance","text":"distance(M::Circle, p, q)\n\nCompute the distance on the Circle M, which is the absolute value of the symmetric remainder of p and q for the real-valued case and the angle between both complex numbers in the Gaussian plane for the complex-valued case.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/circle.html#ManifoldsBase.embed-Tuple{Circle, Any, Any}","page":"Circle","title":"ManifoldsBase.embed","text":"embed(M::Circle, p, X)\n\nEmbed a tangent vector X at p on Circle M in the ambient space. It returns X.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/circle.html#ManifoldsBase.embed-Tuple{Circle, Any}","page":"Circle","title":"ManifoldsBase.embed","text":"embed(M::Circle, p)\n\nEmbed a point p on Circle M in the ambient space. It returns p.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/circle.html#ManifoldsBase.get_coordinates-Tuple{Circle{ℂ}, Any, Any, DefaultOrthonormalBasis{<:Any, ManifoldsBase.TangentSpaceType}}","page":"Circle","title":"ManifoldsBase.get_coordinates","text":"get_coordinates(M::Circle{ℂ}, p, X, B::DefaultOrthonormalBasis)\n\nReturn tangent vector coordinates in the Lie algebra of the Circle.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/circle.html#ManifoldsBase.get_vector_orthonormal-Tuple{Circle{ℂ}, Any, Any, ManifoldsBase.RealNumbers}","page":"Circle","title":"ManifoldsBase.get_vector_orthonormal","text":"get_vector(M::Circle{ℂ}, p, X, B::DefaultOrthonormalBasis)\n\nReturn tangent vector from the coordinates in the Lie algebra of the Circle.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/circle.html#ManifoldsBase.injectivity_radius-Tuple{Circle}","page":"Circle","title":"ManifoldsBase.injectivity_radius","text":"injectivity_radius(M::Circle[, p])\n\nReturn the injectivity radius on the Circle M, i.e. π.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/circle.html#ManifoldsBase.inner-Tuple{Circle, Vararg{Any}}","page":"Circle","title":"ManifoldsBase.inner","text":"inner(M::Circle, p, X, Y)\n\nCompute the inner product of the two tangent vectors X,Y from the tangent plane at p on the Circle M using the restriction of the metric from the embedding, i.e.\n\ng_p(XY) = X*Y\n\nfor the real case and\n\ng_p(XY) = Y^mathrmTX\n\nfor the complex case interpreting complex numbers in the Gaussian plane.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/circle.html#ManifoldsBase.is_flat-Tuple{Circle}","page":"Circle","title":"ManifoldsBase.is_flat","text":"is_flat(::Circle)\n\nReturn true. Circle is a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/circle.html#ManifoldsBase.manifold_dimension-Tuple{Circle}","page":"Circle","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::Circle)\n\nReturn the dimension of the Circle M, i.e. dim(𝕊^1) = 1.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/circle.html#ManifoldsBase.parallel_transport_to-Tuple{Circle, Any, Any, Any}","page":"Circle","title":"ManifoldsBase.parallel_transport_to","text":" parallel_transport_to(M::Circle, p, X, q)\n\nCompute the parallel transport of X from the tangent space at p to the tangent space at q on the Circle M. For the real-valued case this results in the identity. For the complex-valud case, the formula is the same as for the Sphere(1) in the complex plane.\n\nmathcal P_qp X = X - fraclog_p qX_pd^2_ℂ(pq)\nbigl(log_p q + log_q p bigr)\n\nwhere log denotes the logarithmic map on M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/circle.html#ManifoldsBase.project-Tuple{Circle, Any, Any}","page":"Circle","title":"ManifoldsBase.project","text":"project(M::Circle, p, X)\n\nProject a value X onto the tangent space of the point p on the Circle M.\n\nFor the real-valued case this is just the identity. For the complex valued case X is projected onto the line in the complex plane that is parallel to the tangent to p on the unit circle and contains 0.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/circle.html#ManifoldsBase.project-Tuple{Circle, Any}","page":"Circle","title":"ManifoldsBase.project","text":"project(M::Circle, p)\n\nProject a point p onto the Circle M. For the real-valued case this is the remainder with respect to modulus 2π. For the complex-valued case the result is the projection of p onto the unit circle in the complex plane.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/circle.html#Statistics.mean-Tuple{Circle{ℂ}, Any}","page":"Circle","title":"Statistics.mean","text":"mean(M::Circle{ℂ}, x::AbstractVector[, w::AbstractWeights])\n\nCompute the Riemannian mean of x of points on the Circle 𝕊^1, reprsented by complex numbers, i.e. embedded in the complex plane. Comuting the sum\n\ns = sum_i=1^n x_i\n\nthe mean is the angle of the complex number s, so represented in the complex plane as fracslvert s rvert, whenever s neq 0.\n\nIf the sum s=0, the mean is not unique. For example for opposite points or equally spaced angles.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/circle.html#Statistics.mean-Tuple{Circle{ℝ}, Any}","page":"Circle","title":"Statistics.mean","text":"mean(M::Circle{ℝ}, x::AbstractVector[, w::AbstractWeights])\n\nCompute the Riemannian mean of x of points on the Circle 𝕊^1, reprsented by real numbers, i.e. the angular mean\n\noperatornameatanBigl( sum_i=1^n w_isin(x_i) sum_i=1^n w_isin(x_i) Bigr)\n\n\n\n\n\n","category":"method"},{"location":"misc/about.html#About-Manifolds.jl","page":"About","title":"About Manifolds.jl","text":"","category":"section"},{"location":"misc/about.html#License","page":"About","title":"License","text":"","category":"section"},{"location":"misc/about.html","page":"About","title":"About","text":"MIT License","category":"page"},{"location":"misc/about.html#Core-Developers","page":"About","title":"Core Developers","text":"","category":"section"},{"location":"misc/about.html","page":"About","title":"About","text":"Seth Axen\nMateusz Baran\nRonny Bergmann","category":"page"},{"location":"misc/about.html#Contributors","page":"About","title":"Contributors","text":"","category":"section"},{"location":"misc/about.html","page":"About","title":"About","text":"See the GitHub contributors page.","category":"page"},{"location":"misc/about.html","page":"About","title":"About","text":"Contributions are welcome!","category":"page"},{"location":"features/testing.html#Testing","page":"Testing","title":"Testing","text":"","category":"section"},{"location":"features/testing.html","page":"Testing","title":"Testing","text":"Documentation for testing utilities for Manifolds.jl. The function test_manifold can be used to verify that your manifold correctly implements the Manifolds.jl interface. Similarly test_group and test_action can be used to verify implementation of groups and group actions.","category":"page"},{"location":"features/testing.html","page":"Testing","title":"Testing","text":"Manifolds.test_action\nManifolds.test_group\nManifolds.test_manifold\nManifolds.find_eps\nManifolds.test_parallel_transport","category":"page"},{"location":"features/testing.html#Manifolds.test_action","page":"Testing","title":"Manifolds.test_action","text":"test_action(\n A::AbstractGroupAction,\n a_pts::AbstractVector,\n m_pts::AbstractVector,\n X_pts = [];\n atol = 1e-10,\n atol_ident_compose = 0,\n test_optimal_alignment = false,\n test_mutating_group=true,\n test_mutating_action=true,\n test_diff = false,\n test_switch_direction = true,\n)\n\nTests general properties of the action A, given at least three different points that lie on it (contained in a_pts) and three different point that lie on the manifold it acts upon (contained in m_pts).\n\nArguments\n\natol_ident_compose = 0: absolute tolerance for the test that composition with identity doesn't change the group element.\n\n\n\n\n\n","category":"function"},{"location":"features/testing.html#Manifolds.test_group","page":"Testing","title":"Manifolds.test_group","text":"test_group(\n G,\n g_pts::AbstractVector,\n X_pts::AbstractVector = [],\n Xe_pts::AbstractVector = [];\n atol = 1e-10,\n test_mutating = true,\n test_exp_lie_log = true,\n test_diff = false,\n test_invariance = false,\n test_lie_bracket=false,\n test_adjoint_action=false,\n diff_convs = [(), (LeftForwardAction(),), (RightBackwardAction(),)],\n)\n\nTests general properties of the group G, given at least three different points elements of it (contained in g_pts). Optionally, specify test_diff to test differentials of translation, using X_pts, which must contain at least one tangent vector at g_pts[1], and the direction conventions specified in diff_convs. Xe_pts should contain tangent vectors at identity for testing Lie algebra operations. If the group is equipped with an invariant metric, test_invariance indicates that the invariance should be checked for the provided points.\n\n\n\n\n\n","category":"function"},{"location":"features/testing.html#Manifolds.test_manifold","page":"Testing","title":"Manifolds.test_manifold","text":"test_manifold(\n M::AbstractManifold,\n pts::AbstractVector;\n args,\n)\n\nTest general properties of manifold M, given at least three different points that lie on it (contained in pts).\n\nArguments\n\nbasis_has_specialized_diagonalizing_get = false: if true, assumes that DiagonalizingOrthonormalBasis given in basis_types has get_coordinates and get_vector that work without caching.\nbasis_types_to_from = (): basis types that will be tested based on get_coordinates and get_vector.\nbasis_types_vecs = () : basis types that will be tested based on get_vectors\ndefault_inverse_retraction_method = ManifoldsBase.LogarithmicInverseRetraction(): default method for inverse retractions (log.\ndefault_retraction_method = ManifoldsBase.ExponentialRetraction(): default method for retractions (exp).\nexp_log_atol_multiplier = 0: change absolute tolerance of exp/log tests (0 use default, i.e. deactivate atol and use rtol).\nexp_log_rtol_multiplier = 1: change the relative tolerance of exp/log tests (1 use default). This is deactivated if the exp_log_atol_multiplier is nonzero.\nexpected_dimension_type = Integer: expected type of value returned by manifold_dimension.\ninverse_retraction_methods = []: inverse retraction methods that will be tested.\nis_mutating = true: whether mutating variants of functions should be tested.\nis_point_atol_multiplier = 0: determines atol of is_point checks.\nis_tangent_atol_multiplier = 0: determines atol of is_vector checks.\nmid_point12 = test_exp_log ? shortest_geodesic(M, pts[1], pts[2], 0.5) : nothing: if not nothing, then check that mid_point(M, pts[1], pts[2]) is approximately equal to mid_point12. This is by default set to nothing if text_exp_log is set to false.\npoint_distributions = [] : point distributions to test.\nrand_tvector_atol_multiplier = 0 : chage absolute tolerance in testing random vectors (0 use default, i.e. deactivate atol and use rtol) random tangent vectors are tangent vectors.\nretraction_atol_multiplier = 0: change absolute tolerance of (inverse) retraction tests (0 use default, i.e. deactivate atol and use rtol).\nretraction_rtol_multiplier = 1: change the relative tolerance of (inverse) retraction tests (1 use default). This is deactivated if the exp_log_atol_multiplier is nonzero.\nretraction_methods = []: retraction methods that will be tested.\ntest_atlases = []: Vector or tuple of atlases that should be tested.\ntest_exp_log = true: if true, check that exp is the inverse of log.\ntest_injectivity_radius = true: whether implementation of injectivity_radius should be tested.\ntest_inplace = false : if true check if inplace variants work if they are activated, e.g. check that exp!(M, p, p, X) work if test_exp_log = true. This in general requires is_mutating to be true.\ntest_is_tangent: if true check that the default_inverse_retraction_method actually returns valid tangent vectors.\ntest_musical_isomorphisms = false : test musical isomorphisms.\ntest_mutating_rand = false : test the mutating random function for points on manifolds.\ntest_project_point = false: test projections onto the manifold.\ntest_project_tangent = false : test projections on tangent spaces.\ntest_representation_size = true : test repersentation size of points/tvectprs.\ntest_tangent_vector_broadcasting = true : test boradcasting operators on TangentSpace.\ntest_vector_spaces = true : test Vector bundle of this manifold.\ntest_default_vector_transport = false : test the default vector transport (usually parallel transport).\ntest_vee_hat = false: test vee and hat functions.\ntvector_distributions = [] : tangent vector distributions to test.\nvector_transport_methods = []: vector transport methods that should be tested.\nvector_transport_inverse_retractions = [default_inverse_retraction_method for _ in 1:length(vector_transport_methods)]` inverse retractions to use with the vector transport method (especially the differentiated ones)\nvector_transport_to = [ true for _ in 1:length(vector_transport_methods)]: whether to check the to variant of vector transport\nvector_transport_direction = [ true for _ in 1:length(vector_transport_methods)]: whether to check the direction variant of vector transport\n\n\n\n\n\n","category":"function"},{"location":"features/testing.html#Manifolds.find_eps","page":"Testing","title":"Manifolds.find_eps","text":"find_eps(x...)\n\nFind an appropriate tolerance for given points or tangent vectors, or their types.\n\n\n\n\n\n","category":"function"},{"location":"features/testing.html#Manifolds.test_parallel_transport","page":"Testing","title":"Manifolds.test_parallel_transport","text":"test_parallel_transport(M,P; along=false, to=true, diretion=true)\n\nGeneric tests for parallel transport on Mgiven at least two pointsin P.\n\nThe single functions to transport along (a curve), to (a point) or (towards a) direction are sub-tests that can be activated by the keywords arguemnts\n\n!!! Note Since the interface to specify curves is not yet provided, the along keyword does not have an effect yet\n\n\n\n\n\n","category":"function"},{"location":"misc/notation.html#Notation-overview","page":"Notation","title":"Notation overview","text":"","category":"section"},{"location":"misc/notation.html","page":"Notation","title":"Notation","text":"Since manifolds include a reasonable amount of elements and functions, the following list tries to keep an overview of used notation throughout Manifolds.jl. The order is alphabetical by name. They might be used in a plain form within the code or when referring to that code. This is for example the case with the calligraphic symbols.","category":"page"},{"location":"misc/notation.html","page":"Notation","title":"Notation","text":"Within the documented functions, the utf8 symbols are used whenever possible, as long as that renders correctly in TeX within this documentation.","category":"page"},{"location":"misc/notation.html","page":"Notation","title":"Notation","text":"Symbol Description Also used Comment\ntau_p action map by group element p mathrmL_p, mathrmR_p either left or right\noperatornameAd_p(X) adjoint action of element p of a Lie group on the element X of the corresponding Lie algebra \ntimes Cartesian product of two manifolds see ProductManifold\n^wedge (n-ary) Cartesian power of a manifold see PowerManifold\ncdot^mathrmH conjugate/Hermitian transpose \na coordinates of a point in a chart see get_parameters\nfracmathrmDmathrmdt covariant derivative of a vector field X(t) \nT^*_p mathcal M the cotangent space at p \nξ a cotangent vector from T^*_p mathcal M ξ_1 ξ_2 ηzeta sometimes written with base point ξ_p.\nmathrmdphi_p(q) Differential of a map phi mathcal M to mathcal N with respect to p at a point q. For functions of multiple variables, for example phi(p p_1) where p in mathcal M and p_1 in mathcal M_1, variable p is explicitly stated to specify with respect to which argument the differential is calculated. mathrmdphi_q, (mathrmdphi)_q, (phi_*)_q, D_pphi(q) pushes tangent vectors X in T_q mathcal M forward to mathrmdphi_p(q)X in T_phi(q) mathcal N\nn dimension (of a manifold) n_1n_2ldotsm dim(mathcal M) for the real dimension sometimes also dim_mathbb R(mathcal M)\nd(cdotcdot) (Riemannian) distance d_mathcal M(cdotcdot) \nexp_p X exponential map at p in mathcal M of a vector X in T_p mathcal M exp_p(X) \nF a fiber see VectorBundleFibers\nmathbb F a field, usually mathbb F in mathbb Rmathbb C mathbb H, i.e. the real, complex, and quaternion numbers, respectively. field a manifold or a basis is based on\ngamma a geodesic gamma_pq, gamma_pX connecting two points pq or starting in p with velocity X.\noperatornamegrad f(p) (Riemannian) gradient of function f colon mathcalM to mathbbR at p in mathcalM \nnabla f(p) (Euclidean) gradient of function f colon mathcalM to mathbbR at p in mathcalM but thought of as evaluated in the embedding G \ncirc a group operation \ncdot^mathrmH Hermitian or conjugate transposed for both complex or quaternion matrices \noperatornameHess f(p) (Riemannian) Hessian of function f colon T_pmathcalM to T_pmathcal M (i.e. the 1-1-tensor form) at p in mathcalM \nnabla^2 f(p) (Euclidean) Hessian of function f in the embedding H \ne identity element of a group \nI_k identity matrix of size ktimes k \nk indices ij \nlanglecdotcdotrangle inner product (in T_p mathcal M) langlecdotcdotrangle_p g_p(cdotcdot) \noperatornameretr^-1_pq an inverse retraction \nmathfrak g a Lie algebra \nmathcalG a (Lie) group \nlog_p q logarithmic map at p in mathcal M of a point q in mathcal M log_p(q) \nmathcal M a manifold mathcal M_1 mathcal M_2ldotsmathcal N \nN_p mathcal M the normal space of the tangent space T_p mathcal M in some embedding mathcal E that should be clear from context \nV a normal vector from N_p mathcal M W \noperatornameExp the matrix exponential \noperatornameLog the matrix logarithm \nmathcal P_qgets pX parallel transport of the vector X from T_pmathcal M to T_qmathcal M\nmathcal P_pYX parallel transport in direction Y of the vector X from T_pmathcal M to T_qmathcal M, q = exp_pY\nmathcal P_t_1gets t_0^cX parallel transport along the curve c mathcal P^cX=mathcal P_1gets 0^cX of the vector X from p=c(0) to c(1)\np a point on mathcal M p_1 p_2 ldotsq for 3 points one might use xyz\noperatornameretr_pX a retraction \nξ a set of tangent vectors X_1ldotsX_n \nT_p mathcal M the tangent space at p \nX a tangent vector from T_p mathcal M X_1X_2ldotsYZ sometimes written with base point X_p\noperatornametr trace (of a matrix) \ncdot^mathrmT transposed \ne_i in mathbb R^n the ith unit vector e_i^n the space dimension (n) is omited, when clear from context\nB a vector bundle \nmathcal T_qgets pX vector transport of the vector X from T_pmathcal M to T_qmathcal M\nmathcal T_pYX vector transport in direction Y of the vector X from T_pmathcal M to T_qmathcal M, where q is deretmined by Y, for example using the exponential map or some retraction.\noperatornameVol(mathcal M) volume of manifold mathcal M \ntheta_p(X) volume density for vector X tangent at point p \nmathcal W the Weingarten map mathcal W T_pmathcal M N_pmathcal M T_pmathcal M mathcal W_p the second notation to emphasize the dependency of the point pinmathcal M\n0_k the ktimes k zero matrix. ","category":"page"},{"location":"manifolds/symmetricpsdfixedrank.html#Symmetric-Positive-Semidefinite-Matrices-of-Fixed-Rank","page":"Symmetric positive semidefinite fixed rank","title":"Symmetric Positive Semidefinite Matrices of Fixed Rank","text":"","category":"section"},{"location":"manifolds/symmetricpsdfixedrank.html","page":"Symmetric positive semidefinite fixed rank","title":"Symmetric positive semidefinite fixed rank","text":"Modules = [Manifolds]\nPages = [\"manifolds/SymmetricPositiveSemidefiniteFixedRank.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/symmetricpsdfixedrank.html#Manifolds.SymmetricPositiveSemidefiniteFixedRank","page":"Symmetric positive semidefinite fixed rank","title":"Manifolds.SymmetricPositiveSemidefiniteFixedRank","text":"SymmetricPositiveSemidefiniteFixedRank{n,k,𝔽} <: AbstractDecoratorManifold{𝔽}\n\nThe AbstractManifold $ \\operatorname{SPS}_k(n)$ consisting of the real- or complex-valued symmetric positive semidefinite matrices of size n n and rank k, i.e. the set\n\noperatornameSPS_k(n) = bigl\np 𝔽^n n big p^mathrmH = p\napa^mathrmH geq 0 text for all a 𝔽\ntext and operatornamerank(p) = kbigr\n\nwhere cdot^mathrmH denotes the Hermitian, i.e. complex conjugate transpose, and the field 𝔽 ℝ ℂ. We sometimes operatornameSPS_k𝔽(n), when distinguishing the real- and complex-valued manifold is important.\n\nAn element is represented by q 𝔽^n k from the factorization p = qq^mathrmH. Note that since for any unitary (orthogonal) A 𝔽^n n we have (Aq)(Aq)^mathrmH = qq^mathrmH = p, the representation is not unique, or in other words, the manifold is a quotient manifold of 𝔽^n k.\n\nThe tangent space at p, T_poperatornameSPS_k(n), is also represented by matrices Y 𝔽^n k and reads as\n\nT_poperatornameSPS_k(n) = bigl\nX 𝔽^n nX = qY^mathrmH + Yq^mathrmH\ntext ie X = X^mathrmH\nbigr\n\nNote that the metric used yields a non-complete manifold. The metric was used in [JBAS10][MA20].\n\nConstructor\n\nSymmetricPositiveSemidefiniteFixedRank(n::Int, k::Int, field::AbstractNumbers=ℝ)\n\nGenerate the manifold of n n symmetric positive semidefinite matrices of rank k over the field of real numbers ℝ or complex numbers ℂ.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/symmetricpsdfixedrank.html#Base.exp-Tuple{SymmetricPositiveSemidefiniteFixedRank, Any, Any}","page":"Symmetric positive semidefinite fixed rank","title":"Base.exp","text":"exp(M::SymmetricPositiveSemidefiniteFixedRank, q, Y)\n\nCompute the exponential map on the SymmetricPositiveSemidefiniteFixedRank, which just reads\n\n exp_q Y = q+Y\n\nnote: Note\nSince the manifold is represented in the embedding and is a quotient manifold, the exponential and logarithmic map are a bijection only with respect to the equivalence classes. Computing q_2 = exp_p(log_pq)might yield a matrix q_2neq q, but they represent the same point on the quotient manifold, i.e. d_operatornameSPS_k(n)(q_2q) = 0.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpsdfixedrank.html#Base.log-Tuple{SymmetricPositiveSemidefiniteFixedRank, Any, Any}","page":"Symmetric positive semidefinite fixed rank","title":"Base.log","text":"log(M::SymmetricPositiveSemidefiniteFixedRank, q, p)\n\nCompute the logarithmic map on the SymmetricPositiveSemidefiniteFixedRank manifold by minimizing lVert p - qYrVert with respect to Y.\n\nnote: Note\nSince the manifold is represented in the embedding and is a quotient manifold, the exponential and logarithmic map are a bijection only with respect to the equivalence classes. Computing q_2 = exp_p(log_pq)might yield a matrix q_2neq q, but they represent the same point on the quotient manifold, i.e. d_operatornameSPS_k(n)(q_2q) = 0.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpsdfixedrank.html#ManifoldsBase._isapprox-Tuple{SymmetricPositiveSemidefiniteFixedRank, Any, Any}","page":"Symmetric positive semidefinite fixed rank","title":"ManifoldsBase._isapprox","text":"isapprox(M::SymmetricPositiveSemidefiniteFixedRank, p, q; kwargs...)\n\ntest, whether two points p, q are (approximately) nearly the same. Since this is a quotient manifold in the embedding, the test is performed by checking their distance, if they are not the same, i.e. that d_mathcal M(pq) approx 0, where the comparison is performed with the classical isapprox. The kwargs... are passed on to this accordingly.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpsdfixedrank.html#ManifoldsBase.check_point-Union{Tuple{𝔽}, Tuple{k}, Tuple{n}, Tuple{SymmetricPositiveSemidefiniteFixedRank{n, k, 𝔽}, Any}} where {n, k, 𝔽}","page":"Symmetric positive semidefinite fixed rank","title":"ManifoldsBase.check_point","text":"check_point(M::SymmetricPositiveSemidefiniteFixedRank{n,𝔽}, q; kwargs...)\n\nCheck whether q is a valid manifold point on the SymmetricPositiveSemidefiniteFixedRank M, i.e. whether p=q*q' is a symmetric matrix of size (n,n) with values from the corresponding AbstractNumbers 𝔽. The symmetry of p is not explicitly checked since by using q p is symmetric by construction. The tolerance for the symmetry of p can and the rank of q*q' be set using kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpsdfixedrank.html#ManifoldsBase.check_vector-Tuple{SymmetricPositiveSemidefiniteFixedRank, Any, Any}","page":"Symmetric positive semidefinite fixed rank","title":"ManifoldsBase.check_vector","text":"check_vector(M::SymmetricPositiveSemidefiniteFixedRank{n,k,𝔽}, p, X; kwargs... )\n\nCheck whether X is a tangent vector to manifold point p on the SymmetricPositiveSemidefiniteFixedRank M, i.e. X has to be a symmetric matrix of size (n,n) and its values have to be from the correct AbstractNumbers.\n\nDue to the reduced representation this is fulfilled as soon as the matrix is of correct size.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpsdfixedrank.html#ManifoldsBase.distance-Tuple{SymmetricPositiveSemidefiniteFixedRank, Any, Any}","page":"Symmetric positive semidefinite fixed rank","title":"ManifoldsBase.distance","text":"distance(M::SymmetricPositiveSemidefiniteFixedRank, p, q)\n\nCompute the distance between two points p, q on the SymmetricPositiveSemidefiniteFixedRank, which is the Frobenius norm of Y which minimizes lVert p - qYrVert with respect to Y.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpsdfixedrank.html#ManifoldsBase.is_flat-Tuple{SymmetricPositiveSemidefiniteFixedRank}","page":"Symmetric positive semidefinite fixed rank","title":"ManifoldsBase.is_flat","text":"is_flat(::SymmetricPositiveSemidefiniteFixedRank)\n\nReturn false. SymmetricPositiveSemidefiniteFixedRank is not a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpsdfixedrank.html#ManifoldsBase.manifold_dimension-Tuple{SymmetricPositiveSemidefiniteFixedRank}","page":"Symmetric positive semidefinite fixed rank","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::SymmetricPositiveSemidefiniteFixedRank{n,k,𝔽})\n\nReturn the dimension of the SymmetricPositiveSemidefiniteFixedRank matrix M over the number system 𝔽, i.e.\n\nbeginaligned\ndim operatornameSPS_kℝ(n) = kn - frack(k-1)2\ndim operatornameSPS_kℂ(n) = 2kn - k^2\nendaligned\n\nwhere the last k^2 is due to the zero imaginary part for Hermitian matrices diagonal\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpsdfixedrank.html#ManifoldsBase.vector_transport_to-Tuple{SymmetricPositiveSemidefiniteFixedRank, Any, Any, Any, ProjectionTransport}","page":"Symmetric positive semidefinite fixed rank","title":"ManifoldsBase.vector_transport_to","text":"vector_transport_to(M::SymmetricPositiveSemidefiniteFixedRank, p, X, q)\n\ntransport the tangent vector X at p to q by projecting it onto the tangent space at q.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpsdfixedrank.html#ManifoldsBase.zero_vector-Tuple{SymmetricPositiveSemidefiniteFixedRank, Vararg{Any}}","page":"Symmetric positive semidefinite fixed rank","title":"ManifoldsBase.zero_vector","text":" zero_vector(M::SymmetricPositiveSemidefiniteFixedRank, p)\n\nreturns the zero tangent vector in the tangent space of the symmetric positive definite matrix p on the SymmetricPositiveSemidefiniteFixedRank manifold M.\n\n\n\n\n\n","category":"method"},{"location":"features/atlases.html#atlases_and_charts","page":"Atlases and charts","title":"Atlases and charts","text":"","category":"section"},{"location":"features/atlases.html","page":"Atlases and charts","title":"Atlases and charts","text":"Atlases on an n-dimensional manifold mathcal M are collections of charts mathcal A = (U_i φ_i) colon i in I, where I is a (finite or infinte) index family, such that U_i subseteq mathcal M is an open set and each chart φ_i U_i to mathbbR^n is a homeomorphism. This means, that φ_i is bijective – sometimes also called one-to-one and onto - and continuous, and its inverse φ_i^-1 is continuous as well. The inverse φ_i^-1 is called (local) parametrization. The resulting parameters a=φ(p) of p (with respect to the chart φ) are in the literature also called “(local) coordinates”. To distinguish the parameter a from get_coordinates in a basis, we use the terminology parameter in this package.","category":"page"},{"location":"features/atlases.html","page":"Atlases and charts","title":"Atlases and charts","text":"For an atlas mathcal A we further require that","category":"page"},{"location":"features/atlases.html","page":"Atlases and charts","title":"Atlases and charts","text":"displaystylebigcup_iin I U_i = mathcal M","category":"page"},{"location":"features/atlases.html","page":"Atlases and charts","title":"Atlases and charts","text":"We say that φ_i is a chart about p, if pin U_i. An atlas provides a connection between a manifold and the Euclidean space mathbbR^n, since locally, a chart about p can be used to identify its neighborhood (as long as you stay in U_i) with a subset of a Euclidean space. Most manifolds we consider are smooth, i.e. any change of charts φ_i circ φ_j^-1 mathbbR^ntomathbbR^n, where ijin I, is a smooth function. These changes of charts are also called transition maps.","category":"page"},{"location":"features/atlases.html","page":"Atlases and charts","title":"Atlases and charts","text":"Most operations on manifolds in Manifolds.jl avoid operating in a chart through appropriate embeddings and formulas derived for particular manifolds, though atlases provide the most general way of working with manifolds. Compared to these approaches, using an atlas is often more technical and time-consuming. They are extensively used in metric-related functions on MetricManifolds.","category":"page"},{"location":"features/atlases.html","page":"Atlases and charts","title":"Atlases and charts","text":"Atlases are represented by objects of subtypes of AbstractAtlas. There are no type restrictions for indices of charts in atlases.","category":"page"},{"location":"features/atlases.html","page":"Atlases and charts","title":"Atlases and charts","text":"Operations using atlases and charts are available through the following functions:","category":"page"},{"location":"features/atlases.html","page":"Atlases and charts","title":"Atlases and charts","text":"get_chart_index can be used to select an appropriate chart for the neighborhood of a given point p. This function should work deterministically, i.e. for a fixed p always return the same chart.\nget_parameters converts a point to its parameters with respect to the chart in a chart.\nget_point converts parameters (local coordinates) in a chart to the point that corresponds to them.\ninduced_basis returns a basis of a given vector space at a point induced by a chart φ.\ntransition_map converts coordinates of a point between two charts, e.g. computes φ_icirc φ_j^-1 mathbbR^ntomathbbR^n, ijin I.","category":"page"},{"location":"features/atlases.html","page":"Atlases and charts","title":"Atlases and charts","text":"While an atlas could store charts as explicit functions, it is favourable, that the [get_parameters] actually implements a chart φ, get_point its inverse, the prametrization φ^-1.","category":"page"},{"location":"features/atlases.html","page":"Atlases and charts","title":"Atlases and charts","text":"Modules = [Manifolds,ManifoldsBase]\nPages = [\"atlases.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"features/atlases.html#Manifolds.AbstractAtlas","page":"Atlases and charts","title":"Manifolds.AbstractAtlas","text":"AbstractAtlas{𝔽}\n\nAn abstract class for atlases whith charts that have values in the vector space 𝔽ⁿ for some value of n. 𝔽 is a number system determined by an AbstractNumbers object.\n\n\n\n\n\n","category":"type"},{"location":"features/atlases.html#Manifolds.InducedBasis","page":"Atlases and charts","title":"Manifolds.InducedBasis","text":"InducedBasis(vs::VectorSpaceType, A::AbstractAtlas, i)\n\nThe basis induced by chart with index i from an AbstractAtlas A of vector space of type vs.\n\nFor the vs a TangentSpace this works as follows:\n\nLet n denote the dimension of the manifold mathcal M.\n\nLet the parameter a=φ_i(p) mathbb R^n and j1n. We can look at the jth parameter curve b_j(t) = a + te_j, where e_j denotes the jth unit vector. Using the parametrisation we obtain a curve c_j(t) = φ_i^-1(b_j(t)) which fulfills c(0) = p.\n\nNow taking the derivative(s) with respect to t (and evaluate at t=0), we obtain a tangent vector for each j corresponding to an equivalence class of curves (having the same derivative) as\n\nX_j = c_j = fracmathrmdmathrmdt c_i(t) Bigl_t=0\n\nand the set X_1ldotsX_n is the chart-induced basis of T_pmathcal M.\n\nSee also\n\nVectorSpaceType, AbstractBasis\n\n\n\n\n\n","category":"type"},{"location":"features/atlases.html#Manifolds.RetractionAtlas","page":"Atlases and charts","title":"Manifolds.RetractionAtlas","text":"RetractionAtlas{\n 𝔽,\n TRetr<:AbstractRetractionMethod,\n TInvRetr<:AbstractInverseRetractionMethod,\n TBasis<:AbstractBasis,\n} <: AbstractAtlas{𝔽}\n\nAn atlas indexed by points on a manifold, mathcal M = I and parameters (local coordinates) are given in T_pmathcal M. This means that a chart φ_p = mathrmcordcircmathrmretr_p^-1 is only locally defined (around p), where mathrmcord is the decomposition of the tangent vector into coordinates with respect to the given basis of the tangent space, cf. get_coordinates. The parametrization is given by φ_p^-1=mathrmretr_pcircmathrmvec, where mathrmvec turns the basis coordinates into a tangent vector, cf. get_vector.\n\nIn short: The coordinates with respect to a basis are used together with a retraction as a parametrization.\n\nSee also\n\nAbstractAtlas, AbstractInverseRetractionMethod, AbstractRetractionMethod, AbstractBasis\n\n\n\n\n\n","category":"type"},{"location":"features/atlases.html#LinearAlgebra.norm-Tuple{AbstractManifold, AbstractAtlas, Any, Any, Any}","page":"Atlases and charts","title":"LinearAlgebra.norm","text":"norm(M::AbstractManifold, A::AbstractAtlas, i, a, Xc)\n\nCalculate norm on manifold M at point with parameters a in chart i of an AbstractAtlas A of vector with coefficients Xc in induced basis.\n\n\n\n\n\n","category":"method"},{"location":"features/atlases.html#Manifolds.affine_connection!-Tuple{AbstractManifold, Any, AbstractAtlas, Vararg{Any, 4}}","page":"Atlases and charts","title":"Manifolds.affine_connection!","text":"affine_connection!(M::AbstractManifold, Zc, A::AbstractAtlas, i, a, Xc, Yc)\n\nCalculate affine connection on manifold M at point with parameters a in chart i of an an AbstractAtlas A of vectors with coefficients Zc and Yc in induced basis and save the result in Zc.\n\n\n\n\n\n","category":"method"},{"location":"features/atlases.html#Manifolds.affine_connection-Tuple{AbstractManifold, Vararg{Any, 5}}","page":"Atlases and charts","title":"Manifolds.affine_connection","text":"affine_connection(M::AbstractManifold, A::AbstractAtlas, i, a, Xc, Yc)\n\nCalculate affine connection on manifold M at point with parameters a in chart i of AbstractAtlas A of vectors with coefficients Xc and Yc in induced basis.\n\n\n\n\n\n","category":"method"},{"location":"features/atlases.html#Manifolds.check_chart_switch-Tuple{AbstractManifold, AbstractAtlas, Any, Any}","page":"Atlases and charts","title":"Manifolds.check_chart_switch","text":"check_chart_switch(M::AbstractManifold, A::AbstractAtlas, i, a)\n\nDetermine whether chart should be switched when an operation in chart i from an AbstractAtlas A reaches parameters a in that chart.\n\nBy default false is returned.\n\n\n\n\n\n","category":"method"},{"location":"features/atlases.html#Manifolds.get_chart_index-Tuple{AbstractManifold, AbstractAtlas, Any, Any}","page":"Atlases and charts","title":"Manifolds.get_chart_index","text":"get_chart_index(M::AbstractManifold, A::AbstractAtlas, i, a)\n\nSelect a chart from an AbstractAtlas A for manifold M that is suitable for representing the neighborhood of point with parametrization a in chart i. This selection should be deterministic, although different charts may be selected for arbitrarily close but distinct points.\n\nSee also\n\nget_default_atlas\n\n\n\n\n\n","category":"method"},{"location":"features/atlases.html#Manifolds.get_chart_index-Tuple{AbstractManifold, AbstractAtlas, Any}","page":"Atlases and charts","title":"Manifolds.get_chart_index","text":"get_chart_index(M::AbstractManifold, A::AbstractAtlas, p)\n\nSelect a chart from an AbstractAtlas A for manifold M that is suitable for representing the neighborhood of point p. This selection should be deterministic, although different charts may be selected for arbitrarily close but distinct points.\n\nSee also\n\nget_default_atlas\n\n\n\n\n\n","category":"method"},{"location":"features/atlases.html#Manifolds.get_default_atlas-Tuple{AbstractManifold}","page":"Atlases and charts","title":"Manifolds.get_default_atlas","text":"get_default_atlas(::AbstractManifold)\n\nDetermine the default real-valued atlas for the given manifold.\n\n\n\n\n\n","category":"method"},{"location":"features/atlases.html#Manifolds.get_parameters-Tuple{AbstractManifold, AbstractAtlas, Any, Any}","page":"Atlases and charts","title":"Manifolds.get_parameters","text":"get_parameters(M::AbstractManifold, A::AbstractAtlas, i, p)\n\nCalculate parameters (local coordinates) of point p on manifold M in chart from an AbstractAtlas A at index i. This function is hence an implementation of the chart φ_i(p) iin I. The parameters are in the number system determined by A. If the point pnotin U_i is not in the domain of the chart, this method should throw an error.\n\nSee also\n\nget_point, get_chart_index\n\n\n\n\n\n","category":"method"},{"location":"features/atlases.html#Manifolds.get_point-Tuple{AbstractManifold, AbstractAtlas, Any, Any}","page":"Atlases and charts","title":"Manifolds.get_point","text":"get_point(M::AbstractManifold, A::AbstractAtlas, i, a)\n\nCalculate point at parameters (local coordinates) a on manifold M in chart from an AbstractAtlas A at index i. This function is hence an implementation of the inverse φ_i^-1(a) iin I of a chart, also called a parametrization.\n\nSee also\n\nget_parameters, get_chart_index\n\n\n\n\n\n","category":"method"},{"location":"features/atlases.html#Manifolds.induced_basis-Tuple{AbstractManifold, AbstractAtlas, Any, VectorSpaceType}","page":"Atlases and charts","title":"Manifolds.induced_basis","text":"induced_basis(M::AbstractManifold, A::AbstractAtlas, i, p, VST::VectorSpaceType)\n\nBasis of vector space of type VST at point p from manifold M induced by chart (A, i).\n\nSee also\n\nVectorSpaceType, AbstractAtlas\n\n\n\n\n\n","category":"method"},{"location":"features/atlases.html#Manifolds.induced_basis-Union{Tuple{𝔽}, Tuple{AbstractManifold{𝔽}, AbstractAtlas, Any}, Tuple{AbstractManifold{𝔽}, AbstractAtlas, Any, VectorSpaceType}} where 𝔽","page":"Atlases and charts","title":"Manifolds.induced_basis","text":"induced_basis(::AbstractManifold, A::AbstractAtlas, i, VST::VectorSpaceType = TangentSpace)\n\nGet the basis induced by chart with index i from an AbstractAtlas A of vector space of type vs. Returns an object of type InducedBasis.\n\nSee also\n\nVectorSpaceType, AbstractBasis\n\n\n\n\n\n","category":"method"},{"location":"features/atlases.html#Manifolds.inverse_chart_injectivity_radius-Tuple{AbstractManifold, AbstractAtlas, Any}","page":"Atlases and charts","title":"Manifolds.inverse_chart_injectivity_radius","text":"inverse_chart_injectivity_radius(M::AbstractManifold, A::AbstractAtlas, i)\n\nInjectivity radius of get_point for chart i from an AbstractAtlas A of a manifold M.\n\n\n\n\n\n","category":"method"},{"location":"features/atlases.html#Manifolds.local_metric-Tuple{AbstractManifold, Any, InducedBasis}","page":"Atlases and charts","title":"Manifolds.local_metric","text":"local_metric(M::AbstractManifold, p, B::InducedBasis)\n\nCompute the local metric tensor for vectors expressed in terms of coordinates in basis B on manifold M. The point p is not checked.\n\n\n\n\n\n","category":"method"},{"location":"features/atlases.html#Manifolds.transition_map-Tuple{AbstractManifold, AbstractAtlas, Any, AbstractAtlas, Any, Any}","page":"Atlases and charts","title":"Manifolds.transition_map","text":"transition_map(M::AbstractManifold, A_from::AbstractAtlas, i_from, A_to::AbstractAtlas, i_to, a)\ntransition_map(M::AbstractManifold, A::AbstractAtlas, i_from, i_to, a)\n\nGiven coordinates a in chart (A_from, i_from) of a point on manifold M, returns coordinates of that point in chart (A_to, i_to). If A_from and A_to are equal, A_to can be omitted.\n\nMathematically this function is the transition map or change of charts, but it might even be between two atlases A_textfrom = (U_iφ_i)_iin I and A_textto = (V_jpsi_j)_jin J, and hence I J are their index sets. We have i_textfromin I, i_texttoin J.\n\nThis method then computes\n\nbigl(psi_i_texttocirc φ_i_textfrom^-1bigr)(a)\n\nNote that, similarly to get_parameters, this method should fail the same way if V_i_texttocap U_i_textfrom=emptyset.\n\nSee also\n\nAbstractAtlas, get_parameters, get_point\n\n\n\n\n\n","category":"method"},{"location":"features/atlases.html#Manifolds.transition_map_diff!-Tuple{AbstractManifold, Any, AbstractAtlas, Vararg{Any, 4}}","page":"Atlases and charts","title":"Manifolds.transition_map_diff!","text":"transition_map_diff!(M::AbstractManifold, c_out, A::AbstractAtlas, i_from, a, c, i_to)\n\nCompute transition_map_diff on given arguments and save the result in c_out.\n\n\n\n\n\n","category":"method"},{"location":"features/atlases.html#Manifolds.transition_map_diff-Tuple{AbstractManifold, AbstractAtlas, Vararg{Any, 4}}","page":"Atlases and charts","title":"Manifolds.transition_map_diff","text":"transition_map_diff(M::AbstractManifold, A::AbstractAtlas, i_from, a, c, i_to)\n\nCompute differential of transition map from chart i_from to chart i_to from an AbstractAtlas A on manifold M at point with parameters a on tangent vector with coordinates c in the induced basis.\n\n\n\n\n\n","category":"method"},{"location":"features/atlases.html#ManifoldsBase.inner-Tuple{AbstractManifold, AbstractAtlas, Vararg{Any, 4}}","page":"Atlases and charts","title":"ManifoldsBase.inner","text":"inner(M::AbstractManifold, A::AbstractAtlas, i, a, Xc, Yc)\n\nCalculate inner product on manifold M at point with parameters a in chart i of an atlas A of vectors with coefficients Xc and Yc in induced basis.\n\n\n\n\n\n","category":"method"},{"location":"features/atlases.html#Cotangent-space-and-musical-isomorphisms","page":"Atlases and charts","title":"Cotangent space and musical isomorphisms","text":"","category":"section"},{"location":"features/atlases.html","page":"Atlases and charts","title":"Atlases and charts","text":"Related to atlases, there is also support for the cotangent space and coefficients of cotangent vectors in bases of the cotangent space.","category":"page"},{"location":"features/atlases.html","page":"Atlases and charts","title":"Atlases and charts","text":"Functions sharp and flat implement musical isomorphisms for arbitrary vector bundles.","category":"page"},{"location":"features/atlases.html","page":"Atlases and charts","title":"Atlases and charts","text":"Modules = [Manifolds,ManifoldsBase]\nPages = [\"cotangent_space.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"features/atlases.html#Manifolds.RieszRepresenterCotangentVector","page":"Atlases and charts","title":"Manifolds.RieszRepresenterCotangentVector","text":"RieszRepresenterCotangentVector(M::AbstractManifold, p, X)\n\nCotangent vector in Riesz representer form on manifold M at point p with Riesz representer X.\n\n\n\n\n\n","category":"type"},{"location":"features/atlases.html#Manifolds.flat-Tuple{AbstractManifold, Any, Any}","page":"Atlases and charts","title":"Manifolds.flat","text":"flat(M::AbstractManifold, p, X)\n\nCompute the flat isomorphism (one of the musical isomorphisms) of tangent vector X from the vector space of type M at point p from the underlying AbstractManifold.\n\nThe function can be used for example to transform vectors from the tangent bundle to vectors from the cotangent bundle Tmathcal M T^*mathcal M\n\n\n\n\n\n","category":"method"},{"location":"features/atlases.html#Manifolds.sharp-Tuple{AbstractManifold, Any, Any}","page":"Atlases and charts","title":"Manifolds.sharp","text":"sharp(M::AbstractManifold, p, ξ)\n\nCompute the sharp isomorphism (one of the musical isomorphisms) of vector ξ from the vector space M at point p from the underlying AbstractManifold.\n\nThe function can be used for example to transform vectors from the cotangent bundle to vectors from the tangent bundle T^*mathcal M Tmathcal M\n\n\n\n\n\n","category":"method"},{"location":"features/atlases.html#Computations-in-charts","page":"Atlases and charts","title":"Computations in charts","text":"","category":"section"},{"location":"features/atlases.html","page":"Atlases and charts","title":"Atlases and charts","text":"Manifolds.IntegratorTerminatorNearChartBoundary\nManifolds.estimate_distance_from_bvp\nManifolds.solve_chart_exp_ode\nManifolds.solve_chart_log_bvp\nManifolds.solve_chart_parallel_transport_ode","category":"page"},{"location":"features/atlases.html#Manifolds.IntegratorTerminatorNearChartBoundary","page":"Atlases and charts","title":"Manifolds.IntegratorTerminatorNearChartBoundary","text":"IntegratorTerminatorNearChartBoundary{TKwargs}\n\nAn object for determining the point at which integration of a differential equation in a chart on a manifold should be terminated for the purpose of switching a chart.\n\nThe value stored in check_chart_switch_kwargs will be passed as keyword arguments to check_chart_switch. By default an empty tuple is stored.\n\n\n\n\n\n","category":"type"},{"location":"features/atlases.html#Manifolds.estimate_distance_from_bvp","page":"Atlases and charts","title":"Manifolds.estimate_distance_from_bvp","text":"estimate_distance_from_bvp(\n M::AbstractManifold,\n a1,\n a2,\n A::AbstractAtlas,\n i;\n solver=MIRK4(),\n dt=0.05,\n kwargs...,\n)\n\nEstimate distance between points on AbstractManifold M with parameters a1 and a2 in chart i of AbstractAtlas A using solver solver, employing solve_chart_log_bvp to solve the geodesic BVP.\n\n\n\n\n\n","category":"function"},{"location":"features/atlases.html#Manifolds.solve_chart_exp_ode","page":"Atlases and charts","title":"Manifolds.solve_chart_exp_ode","text":"solve_chart_exp_ode(\n M::AbstractManifold,\n a,\n Xc,\n A::AbstractAtlas,\n i0;\n solver=AutoVern9(Rodas5()),\n final_time=1.0,\n check_chart_switch_kwargs=NamedTuple(),\n kwargs...,\n)\n\nSolve geodesic ODE on a manifold M from point of coordinates a in chart i0 from an AbstractAtlas A in direction of coordinates Xc in the induced basis.\n\n\n\n\n\n","category":"function"},{"location":"features/atlases.html#Manifolds.solve_chart_log_bvp","page":"Atlases and charts","title":"Manifolds.solve_chart_log_bvp","text":"solve_chart_log_bvp(\n M::AbstractManifold,\n a1,\n a2,\n A::AbstractAtlas,\n i;\n solver=MIRK4(),\n dt=0.05,\n kwargs...,\n)\n\nSolve the BVP corresponding to geodesic calculation on AbstractManifold M, between points with parameters a1 and a2 in a chart i of an AbstractAtlas A using solver solver. Geodesic γ is sampled at time interval dt, with γ(0) = a1 and γ(1) = a2.\n\n\n\n\n\n","category":"function"},{"location":"features/atlases.html#Manifolds.solve_chart_parallel_transport_ode","page":"Atlases and charts","title":"Manifolds.solve_chart_parallel_transport_ode","text":"solve_chart_parallel_transport_ode(\n M::AbstractManifold,\n a,\n Xc,\n A::AbstractAtlas,\n i0,\n Yc;\n solver=AutoVern9(Rodas5()),\n check_chart_switch_kwargs=NamedTuple(),\n final_time=1.0,\n kwargs...,\n)\n\nParallel transport vector with coordinates Yc along geodesic on a manifold M from point of coordinates a in a chart i0 from an AbstractAtlas A in direction of coordinates Xc in the induced basis.\n\n\n\n\n\n","category":"function"},{"location":"features/differentiation.html#Differentiation","page":"Differentiation","title":"Differentiation","text":"","category":"section"},{"location":"features/differentiation.html","page":"Differentiation","title":"Differentiation","text":"Documentation for Manifolds.jl's methods and types for finite differences and automatic differentiation.","category":"page"},{"location":"features/differentiation.html#Differentiation-backends","page":"Differentiation","title":"Differentiation backends","text":"","category":"section"},{"location":"features/differentiation.html","page":"Differentiation","title":"Differentiation","text":"Modules = [Manifolds]\nPages = [\"differentiation/differentiation.jl\"]\nOrder = [:type, :function, :constant]","category":"page"},{"location":"features/differentiation.html","page":"Differentiation","title":"Differentiation","text":"Further differentiation backends and features are available in ManifoldDiff.jl.","category":"page"},{"location":"features/differentiation.html#FiniteDifferenes.jl","page":"Differentiation","title":"FiniteDifferenes.jl","text":"","category":"section"},{"location":"features/differentiation.html","page":"Differentiation","title":"Differentiation","text":"Modules = [Manifolds]\nPages = [\"differentiation/finite_differences.jl\"]\nOrder = [:type, :function, :constant]","category":"page"},{"location":"features/differentiation.html#Riemannian-differentiation-backends","page":"Differentiation","title":"Riemannian differentiation backends","text":"","category":"section"},{"location":"features/differentiation.html","page":"Differentiation","title":"Differentiation","text":"Modules = [Manifolds]\nPages = [\"differentiation/riemannian_diff.jl\"]\nOrder = [:type, :function, :constant]","category":"page"},{"location":"features/differentiation.html","page":"Differentiation","title":"Differentiation","text":"Modules = [Manifolds]\nPages = [\"differentiation/embedded_diff.jl\"]\nOrder = [:type, :function, :constant]","category":"page"},{"location":"manifolds/flag.html#Flag-manifold","page":"Flag","title":"Flag manifold","text":"","category":"section"},{"location":"manifolds/flag.html","page":"Flag","title":"Flag","text":"Modules = [Manifolds]\nPages = [\"manifolds/Flag.jl\"]\nOrder = [:type,:function]","category":"page"},{"location":"manifolds/flag.html#Manifolds.Flag","page":"Flag","title":"Manifolds.Flag","text":"Flag{N,d} <: AbstractDecoratorManifold{ℝ}\n\nFlag manifold of d subspaces of ℝ^N [YWL21]. By default the manifold uses the Stiefel coordinates representation, embedding it in the Stiefel manifold. The other available representation is an embedding in OrthogonalMatrices. It can be utilized using OrthogonalPoint and OrthogonalTVector wrappers.\n\nTangent space is represented in the block-skew-symmetric form.\n\nConstructor\n\nFlag(N, n1, n2, ..., nd)\n\nGenerate the manifold operatornameFlag(n_1 n_2 n_d N) of subspaces\n\n𝕍_1 𝕍_2 V_d quad operatornamedim(𝕍_i) = n_i\n\nwhere 𝕍_i for i 1 2 d are subspaces of ℝ^N of dimension operatornamedim 𝕍_i = n_i.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/flag.html#Manifolds.OrthogonalPoint","page":"Flag","title":"Manifolds.OrthogonalPoint","text":"OrthogonalPoint <: AbstractManifoldPoint\n\nA type to represent points on a manifold Flag in the orthogonal coordinates representation, i.e. a rotation matrix.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/flag.html#Manifolds.OrthogonalTVector","page":"Flag","title":"Manifolds.OrthogonalTVector","text":"OrthogonalTVector <: TVector\n\nA type to represent tangent vectors to points on a Flag manifold in the orthogonal coordinates representation.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/flag.html#Manifolds.ZeroTuple","page":"Flag","title":"Manifolds.ZeroTuple","text":"ZeroTuple\n\nInternal structure for representing shape of a Flag manifold. Behaves like a normal tuple, except at index zero returns value 0.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/flag.html#Base.convert-Tuple{Type{AbstractMatrix}, Flag, Manifolds.OrthogonalPoint, Manifolds.OrthogonalTVector}","page":"Flag","title":"Base.convert","text":"convert(::Type{AbstractMatrix}, M::Flag, p::OrthogonalPoint, X::OrthogonalTVector)\n\nConvert tangent vector from Flag manifold M from orthogonal representation to Stiefel representation.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/flag.html#Base.convert-Tuple{Type{AbstractMatrix}, Flag, Manifolds.OrthogonalPoint}","page":"Flag","title":"Base.convert","text":"convert(::Type{AbstractMatrix}, M::Flag, p::OrthogonalPoint)\n\nConvert point p from Flag manifold M from orthogonal representation to Stiefel representation.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/flag.html#Base.convert-Tuple{Type{Manifolds.OrthogonalPoint}, Flag, AbstractMatrix}","page":"Flag","title":"Base.convert","text":"convert(::Type{OrthogonalPoint}, M::Flag, p::AbstractMatrix)\n\nConvert point p from Flag manifold M from Stiefel representation to orthogonal representation.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/flag.html#Base.convert-Tuple{Type{Manifolds.OrthogonalTVector}, Flag, AbstractMatrix, AbstractMatrix}","page":"Flag","title":"Base.convert","text":"convert(::Type{OrthogonalTVector}, M::Flag, p::AbstractMatrix, X::AbstractMatrix)\n\nConvert tangent vector from Flag manifold M from Stiefel representation to orthogonal representation.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/flag.html#ManifoldsBase.get_embedding-Union{Tuple{Flag{N, dp1}}, Tuple{dp1}, Tuple{N}} where {N, dp1}","page":"Flag","title":"ManifoldsBase.get_embedding","text":"get_embedding(M::Flag)\n\nGet the embedding of the Flag manifold M, i.e. the Stiefel manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/flag.html#ManifoldsBase.injectivity_radius-Tuple{Flag}","page":"Flag","title":"ManifoldsBase.injectivity_radius","text":"injectivity_radius(M::Flag)\ninjectivity_radius(M::Flag, p)\n\nReturn the injectivity radius on the Flag M, which is fracπ2.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/flag.html#ManifoldsBase.manifold_dimension-Union{Tuple{Flag{N, dp1}}, Tuple{dp1}, Tuple{N}} where {N, dp1}","page":"Flag","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::Flag)\n\nReturn dimension of flag manifold operatornameFlag(n_1 n_2 n_d N). The formula reads sum_i=1^d (n_i-n_i-1)(N-n_i).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/flag.html#The-flag-manifold-represented-as-points-on-the-[Stiefel](@ref)-manifold","page":"Flag","title":"The flag manifold represented as points on the Stiefel manifold","text":"","category":"section"},{"location":"manifolds/flag.html","page":"Flag","title":"Flag","text":"Modules = [Manifolds]\nPages = [\"manifolds/FlagStiefel.jl\"]\nOrder = [:type,:function]","category":"page"},{"location":"manifolds/flag.html#ManifoldsBase.check_vector-Union{Tuple{dp1}, Tuple{N}, Tuple{Flag{N, dp1}, AbstractMatrix, AbstractMatrix}} where {N, dp1}","page":"Flag","title":"ManifoldsBase.check_vector","text":"check_vector(M::Flag, p::AbstractMatrix, X::AbstractMatrix; kwargs... )\n\nCheck whether X is a tangent vector to point p on the Flag manifold M operatornameFlag(n_1 n_2 n_d N) in the Stiefel representation, i.e. that X is a matrix of the form\n\nX = beginbmatrix\n0 B_12 cdots B_1d \n-B_12^mathrmT 0 cdots B_2d \nvdots vdots ddots vdots \n-B_1d^mathrmT -B_2d^mathrmT cdots 0 \n-B_1d+1^mathrmT -B_2d+1^mathrmT cdots -B_dd+1^mathrmT\nendbmatrix\n\nwhere B_ij ℝ^(n_i - n_i-1) (n_j - n_j-1), for 1 i j d+1.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/flag.html#ManifoldsBase.default_inverse_retraction_method-Tuple{Flag}","page":"Flag","title":"ManifoldsBase.default_inverse_retraction_method","text":"default_inverse_retraction_method(M::Flag)\n\nReturn PolarInverseRetraction as the default inverse retraction for the Flag manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/flag.html#ManifoldsBase.default_retraction_method-Tuple{Flag}","page":"Flag","title":"ManifoldsBase.default_retraction_method","text":"default_retraction_method(M::Flag)\n\nReturn PolarRetraction as the default retraction for the Flag manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/flag.html#ManifoldsBase.default_vector_transport_method-Tuple{Flag}","page":"Flag","title":"ManifoldsBase.default_vector_transport_method","text":"default_vector_transport_method(M::Flag)\n\nReturn the ProjectionTransport as the default vector transport method for the Flag manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/flag.html#ManifoldsBase.inverse_retract-Tuple{Flag, Any, Any, PolarInverseRetraction}","page":"Flag","title":"ManifoldsBase.inverse_retract","text":"inverse_retract(M::Flag, p, q, ::PolarInverseRetraction)\n\nCompute the inverse retraction for the PolarRetraction, on the Flag manifold M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/flag.html#ManifoldsBase.project-Tuple{Flag, Any, Any}","page":"Flag","title":"ManifoldsBase.project","text":"project(::Flag, p, X)\n\nProject vector X in the Euclidean embedding to the tangent space at point p on Flag manifold. The formula reads [YWL21]:\n\nY_i = X_i - (p_i p_i^mathrmT) X_i + sum_j neq i p_j X_j^mathrmT p_i\n\nfor i from 1 to d where the resulting vector is Y = Y_1 Y_2 Y_d and X = X_1 X_2 X_d, p = p_1 p_2 p_d are decompositions into basis vector matrices for consecutive subspaces of the flag.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/flag.html#ManifoldsBase.retract-Tuple{Flag, Any, Any, PolarRetraction}","page":"Flag","title":"ManifoldsBase.retract","text":"retract(M::Flag, p, X, ::PolarRetraction)\n\nCompute the SVD-based retraction PolarRetraction on the Flag M. With USV = p + X the retraction reads\n\noperatornameretr_p X = UV^mathrmH\n\nwhere cdot^mathrmH denotes the complex conjugate transposed or Hermitian.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/flag.html#The-flag-manifold-represented-as-orthogonal-matrices","page":"Flag","title":"The flag manifold represented as orthogonal matrices","text":"","category":"section"},{"location":"manifolds/flag.html","page":"Flag","title":"Flag","text":"Modules = [Manifolds]\nPages = [\"manifolds/FlagOrthogonal.jl\"]\nOrder = [:type,:function]","category":"page"},{"location":"manifolds/flag.html#ManifoldsBase.check_vector-Union{Tuple{dp1}, Tuple{N}, Tuple{Flag{N, dp1}, Manifolds.OrthogonalPoint, Manifolds.OrthogonalTVector}} where {N, dp1}","page":"Flag","title":"ManifoldsBase.check_vector","text":"check_vector(M::Flag, p::OrthogonalPoint, X::OrthogonalTVector; kwargs... )\n\nCheck whether X is a tangent vector to point p on the Flag manifold M operatornameFlag(n_1 n_2 n_d N) in the orthogonal matrix representation, i.e. that X is block-skew-symmetric with zero diagonal:\n\nX = beginbmatrix\n0 B_12 cdots B_1d+1 \n-B_12^mathrmT 0 cdots B_2d+1 \nvdots vdots ddots vdots \n-B_1d+1^mathrmT -B_2d+1^mathrmT cdots 0 \nendbmatrix\n\nwhere B_ij ℝ^(n_i - n_i-1) (n_j - n_j-1), for 1 i j d+1.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/flag.html#ManifoldsBase.get_embedding-Union{Tuple{N}, Tuple{Flag{N}, Manifolds.OrthogonalPoint}} where N","page":"Flag","title":"ManifoldsBase.get_embedding","text":"get_embedding(M::Flag, p::OrthogonalPoint)\n\nGet embedding of Flag manifold M, i.e. the manifold OrthogonalMatrices.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/flag.html#ManifoldsBase.project-Union{Tuple{dp1}, Tuple{N}, Tuple{Flag{N, dp1}, Manifolds.OrthogonalPoint, Manifolds.OrthogonalTVector}} where {N, dp1}","page":"Flag","title":"ManifoldsBase.project","text":"project(M::Flag, p::OrthogonalPoint, X::OrthogonalTVector)\n\nProject vector X to tangent space at point p from Flag manifold M operatornameFlag(n_1 n_2 n_d N), in the orthogonal matrix representation. It works by first projecting X to the space of SkewHermitianMatrices and then setting diagonal blocks to 0:\n\nX = beginbmatrix\n0 B_12 cdots B_1d+1 \n-B_12^mathrmT 0 cdots B_2d+1 \nvdots vdots ddots vdots \n-B_1d+1^mathrmT -B_2d+1^mathrmT cdots 0 \nendbmatrix\n\nwhere B_ij ℝ^(n_i - n_i-1) (n_j - n_j-1), for 1 i j d+1.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/flag.html#ManifoldsBase.retract-Tuple{Flag, Manifolds.OrthogonalPoint, Manifolds.OrthogonalTVector, QRRetraction}","page":"Flag","title":"ManifoldsBase.retract","text":"retract(M::Flag, p::OrthogonalPoint, X::OrthogonalTVector, ::QRRetraction)\n\nCompute the QR retraction on the Flag in the orthogonal matrix representation as the first order approximation to the exponential map. Similar to QR retraction for [GeneralUnitaryMatrices].\n\n\n\n\n\n","category":"method"},{"location":"tutorials/working-in-charts.html#Working-in-charts","page":"work in charts","title":"Working in charts","text":"","category":"section"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"In this tutorial we will learn how to use charts for basic geometric operations like exponential map, logarithmic map and parallel transport.","category":"page"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"There are two conceptually different approaches to working on a manifold: working in charts and chart-free representations.","category":"page"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"The first one, widespread in differential geometry textbooks, is based on defining an atlas on the manifold and performing computations in selected charts. This approach, while generic, is not ideally suitable in all circumstances. For example, working in charts that do not cover the entire manifold causes issues with having to switch charts when operating on a manifold.","category":"page"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"The second one is beneficital, if there exist a representation of points and tangent vectors for a manifold, which allow for efficient closed-form formulas for standard functions like the exponential map or Riemannian distance in this representation. These computations are then chart-free. Manifolds.jl supports both approaches, although the chart-free approach is the main focus of the library.","category":"page"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"In this tutorial we focus on chart-based computation.","category":"page"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"using Manifolds, RecursiveArrayTools, OrdinaryDiffEq, DiffEqCallbacks, BoundaryValueDiffEq","category":"page"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"The manifold we consider is the M is the torus in form of the EmbeddedTorus, that is the representation defined as a surface of revolution of a circle of radius 2 around a circle of radius 3. The atlas we will perform computations in is its DefaultTorusAtlas A, consistting of a family of charts indexed by two angles, that specify the base point of the chart.","category":"page"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"We will draw geodesics time between 0 and t_end, and then sample the solution at multiples of dt and draw a line connecting sampled points.","category":"page"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"M = Manifolds.EmbeddedTorus(3, 2)\nA = Manifolds.DefaultTorusAtlas()","category":"page"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"Manifolds.DefaultTorusAtlas()","category":"page"},{"location":"tutorials/working-in-charts.html#Setup","page":"work in charts","title":"Setup","text":"","category":"section"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"We will first set up our plot with an empty torus. param_points are points on the surface of the torus that will be used for basic surface shape in Makie.jl. The torus will be colored according to its Gaussian curvature stored in gcs. We later want to have a color scale that has negative curvature blue, zero curvature white and positive curvature red so gcs_mm is the largest absolute value of the curvature that will be needed to properly set range of curvature values.","category":"page"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"In the documentation this tutorial represents a static situation (without interactivity). Makie.jl rendering is turned off.","category":"page"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"# using GLMakie, Makie\n# GLMakie.activate!()\n\n\"\"\"\n torus_figure()\n\nThis function generates a simple plot of a torus and returns the new figure containing the plot.\n\"\"\"\nfunction torus_figure()\n fig = Figure(resolution=(1400, 1000), fontsize=16)\n ax = LScene(fig[1, 1], show_axis=true)\n ϴs, φs = LinRange(-π, π, 50), LinRange(-π, π, 50)\n param_points = [Manifolds._torus_param(M, θ, φ) for θ in ϴs, φ in φs]\n X1, Y1, Z1 = [[p[i] for p in param_points] for i in 1:3]\n gcs = [gaussian_curvature(M, p) for p in param_points]\n gcs_mm = max(abs(minimum(gcs)), abs(maximum(gcs)))\n pltobj = surface!(\n ax,\n X1,\n Y1,\n Z1;\n shading=true,\n ambient=Vec3f(0.65, 0.65, 0.65),\n backlight=1.0f0,\n color=gcs,\n colormap=Reverse(:RdBu),\n colorrange=(-gcs_mm, gcs_mm),\n transparency=true,\n )\n wireframe!(ax, X1, Y1, Z1; transparency=true, color=:gray, linewidth=0.5)\n zoom!(ax.scene, cameracontrols(ax.scene), 0.98)\n Colorbar(fig[1, 2], pltobj, height=Relative(0.5), label=\"Gaussian curvature\")\n return ax, fig\nend","category":"page"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"torus_figure","category":"page"},{"location":"tutorials/working-in-charts.html#Values-for-the-geodesic","page":"work in charts","title":"Values for the geodesic","text":"","category":"section"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"solve_for is a helper function that solves a parallel transport along geodesic problem on the torus M. p0x is the (theta varphi) parametrization of the point from which we will transport the vector. We first calculate the coordinates in the embedding of p0x and store it as p, and then get the initial chart from atlas A appropriate for starting working at point p. The vector we transport has coordinates Y_transp in the induced tangent space basis of chart i_p0x. The function returns the full solution to the parallel transport problem, containing the sequence of charts that was used and solutions of differential equations computed using OrdinaryDiffEq.","category":"page"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"bvp_i is needed later for a different purpose, it is the chart index we will use for solving the logarithmic map boundary value problem in.","category":"page"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"Next we solve the vector transport problem solve_for([θₚ, φₚ], [θₓ, φₓ], [θy, φy]), sample the result at the selected time steps and store the result in geo. The solution includes the geodesic which we extract and convert to a sequence of points digestible by Makie.jl, geo_ps. [θₚ, φₚ] is the parametrization in chart (0, 0) of the starting point of the geodesic. The direction of the geodesic is determined by [θₓ, φₓ], coordinates of the tangent vector at the starting point expressed in the induced basis of chart i_p0x (which depends on the initial point). Finally, [θy, φy] are the coordinates of the tangent vector that will be transported along the geodesic, which are also expressed in same basis as [θₓ, φₓ].","category":"page"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"We won’t draw the transported vector at every point as there would be too many arrows, which is why we select every 100th point only for that purpose with pt_indices. Then, geo_ps_pt contains points at which the transported vector is tangent to and geo_Ys the transported vector at that point, represented in the embedding.","category":"page"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"The logarithmic map will be solved between points with parametrization bvp_a1 and bvp_a2 in chart bvp_i. The result is assigned to variable bvp_sol and then sampled with time step 0.05. The result of this sampling is converted from parameters in chart bvp_i to point in the embedding and stored in geo_r.","category":"page"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"function solve_for(p0x, X_p0x, Y_transp, T)\n p = [Manifolds._torus_param(M, p0x...)...]\n i_p0x = Manifolds.get_chart_index(M, A, p)\n p_exp = Manifolds.solve_chart_parallel_transport_ode(\n M,\n [0.0, 0.0],\n X_p0x,\n A,\n i_p0x,\n Y_transp;\n final_time=T,\n )\n return p_exp\nend;","category":"page"},{"location":"tutorials/working-in-charts.html#Solving-parallel-Transport-ODE","page":"work in charts","title":"Solving parallel Transport ODE","text":"","category":"section"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"We set the end time t_end and time step dt.","category":"page"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"t_end = 2.0\ndt = 1e-1","category":"page"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"0.1","category":"page"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"We also parametrise the start point and direction.","category":"page"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"θₚ = π/10\nφₚ = -π/4\nθₓ = π/2\nφₓ = 0.7\nθy = 0.2\nφy = -0.1\n\ngeo = solve_for([θₚ, φₚ], [θₓ, φₓ], [θy, φy], t_end)(0.0:dt:t_end);\n# geo_ps = [Point3f(s[1]) for s in geo]\n# pt_indices = 1:div(length(geo), 10):length(geo)\n# geo_ps_pt = [Point3f(s[1]) for s in geo[pt_indices]]\n# geo_Ys = [Point3f(s[3]) for s in geo[pt_indices]]\n\n# ax1, fig1 = torus_figure()\n# arrows!(ax1, geo_ps_pt, geo_Ys, linewidth=0.05, color=:blue)\n# lines!(geo_ps; linewidth=4.0, color=:green)\n# fig1","category":"page"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"(Image: fig-pt)","category":"page"},{"location":"tutorials/working-in-charts.html#Solving-the-logairthmic-map-ODE","page":"work in charts","title":"Solving the logairthmic map ODE","text":"","category":"section"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"θ₁=π/2\nφ₁=-1.0\nθ₂=-π/8\nφ₂=π/2\n\nbvp_i = (0, 0)\nbvp_a1 = [θ₁, φ₁]\nbvp_a2 = [θ₂, φ₂]\nbvp_sol = Manifolds.solve_chart_log_bvp(M, bvp_a1, bvp_a2, A, bvp_i);\n# geo_r = [Point3f(get_point(M, A, bvp_i, p[1:2])) for p in bvp_sol(0.0:0.05:1.0)]\n\n# ax2, fig2 = torus_figure()\n# lines!(geo_r; linewidth=4.0, color=:green)\n# fig2","category":"page"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"(Image: fig-geodesic)","category":"page"},{"location":"tutorials/working-in-charts.html","page":"work in charts","title":"work in charts","text":"An interactive Pluto version of this tutorial is available in file tutorials/working-in-charts.jl.","category":"page"},{"location":"tutorials/getstarted.html#Get-Started-with-Manifolds.jl","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"","category":"section"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"This is a short overview of Manifolds.jl and how to get started working with your first Manifold. we first need to install the package, using for example","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"using Pkg; Pkg.add(\"Manifolds\")","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Then you can load the package with","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"using Manifolds","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"[ Info: Precompiling ManifoldsRecipesBaseExt [37da849e-34ab-54fd-a5a4-b22599bd6cb0]","category":"page"},{"location":"tutorials/getstarted.html#Using-the-Library-of-Manifolds","page":"🚀 Get Started with Manifolds.jl","title":"Using the Library of Manifolds","text":"","category":"section"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Manifolds.jl is first of all a library of manifolds, see the list in the menu here under “basic manifolds”.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Let’s look at three examples together with the first few functions on manifolds.","category":"page"},{"location":"tutorials/getstarted.html#.-[The-Euclidean-space](https://juliamanifolds.github.io/Manifolds.jl/latest/manifolds/euclidean.html)","page":"🚀 Get Started with Manifolds.jl","title":"1. The Euclidean space","text":"","category":"section"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"The Euclidean Space Euclidean brings us (back) into linear case of vectors, so in terms of manifolds, this is a very simple one. It is often useful to compare to classical algorithms, or implementations.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"M₁ = Euclidean(3)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Euclidean(3; field = ℝ)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Since a manifold is a type in Julia, we write it in CamelCase. Its parameters are first a dimension or size parameter of the manifold, sometimes optional is a field the manifold is defined over.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"For example the above definition is the same as the real-valued case","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"M₁ === Euclidean(3, field=ℝ)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"true","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"But we even introduced a short hand notation, since ℝ is also just a symbol/variable to use”","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"M₁ === ℝ^3","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"true","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"And similarly here are two ways to create the manifold of vectors of length two with complex entries – or mathematically the space mathbb C^2","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Euclidean(2, field=ℂ) === ℂ^2","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"true","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"The easiest to check is the dimension of a manifold. Here we have three “directions to walk into” at every point pin mathbb R ^3 so 🔗 manifold_dimension) is","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"manifold_dimension(M₁)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"3","category":"page"},{"location":"tutorials/getstarted.html#.-[The-hyperpolic-space](@ref-HyperbolicSpace)","page":"🚀 Get Started with Manifolds.jl","title":"2. The hyperpolic space","text":"","category":"section"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"The d-dimensional hyperbolic space is usually represented in mathbb R^d+1 as the set of points pinmathbb R^3 fulfilling","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"p_1^2+p_2^2+cdots+p_d^2-p_d+1^2 = -1","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"We define the manifold using","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"M₂ = Hyperbolic(2)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Hyperbolic(2)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"And we can again just start with looking at the manifold dimension of M₂","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"manifold_dimension(M₂)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"2","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"A next useful function is to check, whether some pmathbb R^3 is a point on the manifold M₂. We can check","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"is_point(M₂, [0, 0, 1])","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"true","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"or","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"is_point(M₂, [1, 0, 1])","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"false","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Keyword arguments are passed on to any numerical checks, for example an absolute tolerance when checking the above equiality.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"But in an interactive session an error message might be helpful. A positional (third) argument is present to activate this. Setting this parameter to true, we obtain an error message that gives insight into why the point is not a point on M₂. Note that the LoadError: is due to quarto, on REPL you would just get the DomainError.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"is_point(M₂, [0, 0, 1.001], true)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"LoadError: DomainError with -1.0020009999999997:\nThe point [0.0, 0.0, 1.001] does not lie on Hyperbolic(2) since its Minkowski inner product is not -1.","category":"page"},{"location":"tutorials/getstarted.html#.-[The-sphere](@ref-SphereSection)","page":"🚀 Get Started with Manifolds.jl","title":"3. The sphere","text":"","category":"section"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"The sphere mathbb S^d is the d-dimensional sphere represented in its embedded form, that is unit vectors p in mathbb R^d+1 with unit norm lVert p rVert_2 = 1.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"M₃ = Sphere(2)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Sphere(2, ℝ)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"If we only have a point that is approximately on the manifold, we can allow for a tolerance. Usually these are the same values of atol and rtol alowed in isapprox, i.e. we get","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"is_point(M₃, [0, 0, 1.001]; atol=1e-3)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"true","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Here we can show a last nice check: 🔗 is_vector to check whether a tangent vector X is a representation of a tangent vector XT_pmathcal M to a point p on the manifold.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"This function has two positional asrguments, the first to again indicate whether to throw an error, the second to disable the check that p is a valid point on the manifold. Usually this validity is essential for the tangent check, but if it was for example performed before, it can be turned off to spare time.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"For example in our first example the point is not of unit norm","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"is_vector(M₃, [2, 0, 0], [0, 1, 1])","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"false","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"But the orthogonality of p and X is still valid, we can disable the point check, but even setting the error to true we get here","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"is_vector(M₃, [2, 0, 0], [0, 1, 1], true, false)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"true","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"But of course it is better to use a valid point in the first place","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"is_vector(M₃, [1, 0, 0], [0, 1, 1])","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"true","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"and for these we again get informative error messages","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"@expect_error is_vector(M₃, [1, 0, 0], [0.1, 1, 1], true) DomainError","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"LoadError: LoadError: UndefVarError: `@expect_error` not defined\nin expression starting at In[19]:1","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"To learn about how to define a manifold youself check out the 🔗 How to define your own manifold tutorial of 🔗 ManifoldsBase.jl.”","category":"page"},{"location":"tutorials/getstarted.html#Building-more-advanced-manifolds","page":"🚀 Get Started with Manifolds.jl","title":"Building more advanced manifolds","text":"","category":"section"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Based on these basic manifolds we can directly build more advanced manifolds.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"The first one concerns vectors or matrices of data on a manifold, the PowerManifold.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"M₄ = M₂^2","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"PowerManifold(Hyperbolic(2), 2)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Then points are represented by arrays, where the power manifold dimension is added in the end. In other words – for the hyperbolic manifold here, we have a matrix with 2 columns, where each column is a valid point on hyperbolic space.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"p = [0 0; 0 1; 1 sqrt(2)]","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"3×2 Matrix{Float64}:\n 0.0 0.0\n 0.0 1.0\n 1.0 1.41421","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"[is_point(M₂, p[:, 1]), is_point(M₂, p[:, 2])]","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"2-element Vector{Bool}:\n 1\n 1","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"But of course the method we used previously also works for power manifolds:","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"is_point(M₄, p)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"true","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Note that nested power manifolds are combined into one as in","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"M₄₂ = M₄^4","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"PowerManifold(Hyperbolic(2), 2, 4)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"which represents 2times 4 – matrices of hyperbolic points represented in 3times 2times 4 arrays.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"We can – alternatively – use a power manifold with nested arrays","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"M₅ = PowerManifold(M₃, NestedPowerRepresentation(), 2)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"PowerManifold(Sphere(2, ℝ), NestedPowerRepresentation(), 2)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"which emphasizes that we have vectors of length 2 that contain points, so we store them that way.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"p₂ = [[0.0, 0.0, 1.0], [0.0, 1.0, 0.0]]","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"2-element Vector{Vector{Float64}}:\n [0.0, 0.0, 1.0]\n [0.0, 1.0, 0.0]","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"To unify both representations, elements of the power manifold can also be accessed in the classical indexing fashion, if we start with the corresponding manifold first. This way one can implement algorithms also independent of which representation is used.”","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"p[M₄, 1]","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"3-element Vector{Float64}:\n 0.0\n 0.0\n 1.0","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"p₂[M₅, 2]","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"3-element Vector{Float64}:\n 0.0\n 1.0\n 0.0","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Another construtor is the ProductManifold to combine different manifolds. Here of course the order matters. First we construct these using ","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"M₆ = M₂ × M₃","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"ProductManifold with 2 submanifolds:\n Hyperbolic(2)\n Sphere(2, ℝ)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Since now the representations might differ from element to element, we have to encapsulate these in their own type.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"p₃ = Manifolds.ArrayPartition([0, 0, 1], [0, 1, 0])","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"([0, 0, 1], [0, 1, 0])","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Here ArrayPartition taken from 🔗 RecursiveArrayTools.jl to store the point on the product manifold efficiently in one array, still allowing efficient access to the product elements.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"is_point(M₆, p₃, true)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"true","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"But accessing single components still works the same.”","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"p₃[M₆, 1]","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"3-element Vector{Int64}:\n 0\n 0\n 1","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Finally, also the TangentBundle, the manifold collecting all tangent spaces on a manifold is available as”","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"M₇ = TangentBundle(M₃)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"TangentBundle(Sphere(2, ℝ))","category":"page"},{"location":"tutorials/getstarted.html#Implementing-generic-Functions","page":"🚀 Get Started with Manifolds.jl","title":"Implementing generic Functions","text":"","category":"section"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"In this section we take a look how to implement generic functions on manifolds.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"For our example here, we want to implement the so-called 📖 Bézier curve using the so-called 📖 de-Casteljau algorithm. The linked algorithm can easily be generalised to manifolds by replacing lines with geodesics. This was for example used in [BG18] and the following example is an extended version of an example from [ABBR23].","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"The algorithm works recursively. For the case that we have a Bézier curve with just two points, the algorithm just evaluates the geodesic connecting both at some time point t01. The function to evaluate a shortest geodesic (it might not be unique, but then a deterministic choice is taken) between two points p and q on a manifold M 🔗 shortest_geodesic(M, p, q, t).","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"function de_Casteljau(M::AbstractManifold, t, pts::NTuple{2})\n return shortest_geodesic(M, pts[1], pts[2], t)\nend","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"de_Casteljau (generic function with 1 method)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"function de_Casteljau(M::AbstractManifold, t, pts::NTuple)\n p = de_Casteljau(M, t, pts[1:(end - 1)])\n q = de_Casteljau(M, t, pts[2:end])\n return shortest_geodesic(M, p, q, t)\nend","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"de_Casteljau (generic function with 2 methods)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Which can now be used on any manifold where the shortest geodesic is implemented","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Now on several manifolds the 📖 exponential map and its (locally defined) inverse, the logarithmic map might not be available in an implementation. So one way to generalise this, is the use of a retraction (see [AMS08], Def. 4.1.1 for details) and its (local) inverse.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"The function itself is quite similar to the expponential map, just that 🔗 retract(M, p, X, m) has one further parameter, the type of retraction to take, so m is a subtype of AbstractRetractionMethod m, the same for the 🔗 inverse_retract(M, p, q, n) with an AbstractInverseRetractionMethod n.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Thinking of a generic implementation, we would like to have a way to specify one, that is available. This can be done by using 🔗 default_retraction_method and 🔗 default_inverse_retraction_method, respectively. We implement","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"function generic_de_Casteljau(\n M::AbstractManifold,\n t,\n pts::NTuple{2};\n m::AbstractRetractionMethod=default_retraction_method(M),\n n::AbstractInverseRetractionMethod=default_inverse_retraction_method(M),\n)\n X = inverse_retract(M, pts[1], pts[2], n)\n return retract(M, pts[1], X, t, m)\nend","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"generic_de_Casteljau (generic function with 1 method)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"and for the recursion","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"function generic_de_Casteljau(\n M::AbstractManifold,\n t,\n pts::NTuple;\n m::AbstractRetractionMethod=default_retraction_method(M),\n n::AbstractInverseRetractionMethod=default_inverse_retraction_method(M),\n)\n p = generic_de_Casteljau(M, t, pts[1:(end - 1)]; m=m, n=n)\n q = generic_de_Casteljau(M, t, pts[2:end]; m=m, n=n)\n X = inverse_retract(M, p, q, n)\n return retract(M, p, X, t, m)\nend","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"generic_de_Casteljau (generic function with 2 methods)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Note that on a manifold M where the exponential map is implemented, the default_retraction_method(M) returns 🔗 ExponentialRetraction, which yields that the retract function falls back to calling exp.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"The same mechanism exists for 🔗 parallel_transport_to(M, p, X, q) and the more general 🔗 vector_transport_to(M, p, X, q, m) whose 🔗 AbstractVectorTransportMethod m has a default defined by 🔗 default_vector_transport_method(M).","category":"page"},{"location":"tutorials/getstarted.html#Allocating-and-in-place-computations","page":"🚀 Get Started with Manifolds.jl","title":"Allocating and in-place computations","text":"","category":"section"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Memory allocation is a 🔗 critical performace issue when programming in Julia. To take this into account, Manifolds.jl provides special functions to reduce the amount of allocations.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"We again look at the 📖 exponential map. On a manifold M the exponential map needs a point p (to start from) and a tangent vector X, which can be seen as direction to “walk into” as well as the length to walk into this direction. In Manifolds.jl the function can then be called with q = exp(M, p, X) (see 🔗 exp(M, p, X)). This function returns the resulting point q, which requires to allocate new memory.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"To avoid this allocation, the function 🔗 exp!(M, q, p, X) can be called. Here q is allocated beforehand and is passed as the memory, where the result is returned in. It might be used even for interims computations, as long as it does not introduce side effects. Thas means that even with exp!(M, p, p, X) the result is correct.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Let’s look at an example.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"We take another look at the Sphere, but now a high-dimensional one. We can also illustrate how to generate radnom points and tangent vectors.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"M = Sphere(10000)\np₄ = rand(M)\nX = rand(M; vector_at=p₄)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Looking at the allocations required we get","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"@allocated exp(M, p₄, X)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"9928999","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"While if we have already allocated memory for the resulting point on the manifold, for example","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"q₂ = zero(p₄);","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"There are no new memory allocations necessary if we use the in-place function.”","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"@allocated exp!(M, q₂, p₄, X)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"0","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"This methodology is used for all functions that compute a new point or tangent vector. By default all allocating functions allocate memory and call the in-place function. This also means that if you implement a new manifold, you just have to implement the in-place version.","category":"page"},{"location":"tutorials/getstarted.html#Decorating-a-manifold","page":"🚀 Get Started with Manifolds.jl","title":"Decorating a manifold","text":"","category":"section"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"As you saw until now, an 🔗 AbstractManifold describes a Riemannian manifold. For completeness, this also includes the chosen 📖 Riemannian metric tensor or inner product on the tangent spaces.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"In Manifolds.jl these are assumed to be a “reasonable default”. For example on the Sphere(n) we used above, the default metric is the one inherited from restricting the inner product from the embedding space onto each tangent space.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Consider a manifold like","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"M₈ = SymmetricPositiveDefinite(3)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"SymmetricPositiveDefinite(3)","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"which is the manifold of 33 matrices that are symmetric and positive definite. which has a default as well, the affine invariant AffineInvariantMetric, but also has several different metrics.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"To switch the metric, we use the idea of a 📖 decorator pattern approach. Defining","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"M₈₂ = MetricManifold(M₈, BuresWassersteinMetric())","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"MetricManifold(SymmetricPositiveDefinite(3), BuresWassersteinMetric())","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"changes the manifold to use the BuresWassersteinMetric.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"This changes all functions that depend on the metric, most prominently the Riemannian matric, but also the exponential and logarithmic map and hence also geodesics.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"All functions that are not dependent on a metric – for example the manifold dimension, the tests of points and vectors we already looked at, but also all retractions – stay unchanged. This means that for example","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"[manifold_dimension(M₈₂), manifold_dimension(M₈)]","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"2-element Vector{Int64}:\n 6\n 6","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"both calls the same underlying function. On the other hand with","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"p₅, X₅ = one(zeros(3, 3)), [1.0 0.0 1.0; 0.0 1.0 0.0; 1.0 0.0 1.0]","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"([1.0 0.0 0.0; 0.0 1.0 0.0; 0.0 0.0 1.0], [1.0 0.0 1.0; 0.0 1.0 0.0; 1.0 0.0 1.0])","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"but for example the exponential map and the norm yield different results","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"[exp(M₈, p₅, X₅), exp(M₈₂, p₅, X₅)]","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"2-element Vector{Matrix{Float64}}:\n [4.194528049465325 0.0 3.194528049465325; 0.0 2.718281828459045 0.0; 3.194528049465325 0.0 4.194528049465328]\n [2.5 0.0 1.5; 0.0 2.25 0.0; 1.5 0.0 2.5]","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"[norm(M₈, p₅, X₅), norm(M₈₂, p₅, X₅)]","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"2-element Vector{Float64}:\n 2.23606797749979\n 1.118033988749895","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Technically this done using Traits – the trait here is the IsMetricManifold trait. Our trait system allows to combine traits but also to inherit properties in a hierarchical way, see 🔗 here for the technical details.","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"The same approach is used for","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"specifying a different connection\nspecifying a manifold as a certain quotient manifold\nspecifying a certain 🔗 embeddings\nspecify a certain group action","category":"page"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"Again, for all of these, the concrete types only have to be used if you want to do a second, different from the details, property, for example a second way to embed a manfiold. If a manifold is (in its usual representation) an embedded manifold, this works with the default manifold type already, since then it is again set as the reasonable default.","category":"page"},{"location":"tutorials/getstarted.html#Literature","page":"🚀 Get Started with Manifolds.jl","title":"Literature","text":"","category":"section"},{"location":"tutorials/getstarted.html","page":"🚀 Get Started with Manifolds.jl","title":"🚀 Get Started with Manifolds.jl","text":"
    [AMS08]
    \n
    \n
    P.-A. Absil, R. Mahony and R. Sepulchre. Optimization Algorithms on Matrix Manifolds. Princeton University Press (2008), available online at [press.princeton.edu/chapters/absil/](http://press.princeton.edu/chapters/absil/).
    \n
    [ABBR23]
    \n
    \n
    S. D. Axen, M. Baran, R. Bergmann and K. Rzecki. Manifolds.jl: An Extensible Julia Framework for Data Analysis on Manifolds. AMS Transactions on Mathematical Software (2023), arXiv:2021.08777, accepted for publication.
    \n
    [BG18]
    \n
    \n
    R. Bergmann and P.-Y. Gousenbourger. A variational model for data fitting on manifolds by minimizing the acceleration of a Bézier curve. Frontiers in Applied Mathematics and Statistics 4 (2018), arXiv:1807.10090.
    \n
    \n
    ","category":"page"},{"location":"manifolds/hyperbolic.html#HyperbolicSpace","page":"Hyperbolic space","title":"Hyperbolic space","text":"","category":"section"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"The hyperbolic space can be represented in three different models.","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"Hyperboloid which is the default model, i.e. is used when using arbitrary array types for points and tangent vectors\nPoincaré ball with separate types for points and tangent vectors and a visualization for the two-dimensional case\nPoincaré half space with separate types for points and tangent vectors and a visualization for the two-dimensional cae.","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"In the following the common functions are collected.","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"A function in this general section uses vectors interpreted as if in the hyperboloid model, and other representations usually just convert to this representation to use these general functions.","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"Modules = [Manifolds]\nPages = [\"manifolds/Hyperbolic.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/hyperbolic.html#Manifolds.Hyperbolic","page":"Hyperbolic space","title":"Manifolds.Hyperbolic","text":"Hyperbolic{N} <: AbstractDecoratorManifold{ℝ}\n\nThe hyperbolic space mathcal H^n represented by n+1-Tuples, i.e. embedded in the Lorentzian manifold equipped with the MinkowskiMetric cdotcdot_mathrmM. The space is defined as\n\nmathcal H^n = Biglp ℝ^n+1 Big pp_mathrmM= -p_n+1^2\n + displaystylesum_k=1^n p_k^2 = -1 p_n+1 0Bigr\n\nThe tangent space T_p mathcal H^n is given by\n\nT_p mathcal H^n = bigl\nX ℝ^n+1 pX_mathrmM = 0\nbigr\n\nNote that while the MinkowskiMetric renders the Lorentz manifold (only) pseudo-Riemannian, on the tangent bundle of the Hyperbolic space it induces a Riemannian metric. The corresponding sectional curvature is -1.\n\nIf p and X are Vectors of length n+1 they are assumed to be a HyperboloidPoint and a HyperboloidTVector, respectively\n\nOther models are the Poincaré ball model, see PoincareBallPoint and PoincareBallTVector, respectiely and the Poincaré half space model, see PoincareHalfSpacePoint and PoincareHalfSpaceTVector, respectively.\n\nConstructor\n\nHyperbolic(n)\n\nGenerate the Hyperbolic manifold of dimension n.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/hyperbolic.html#Manifolds.HyperboloidPoint","page":"Hyperbolic space","title":"Manifolds.HyperboloidPoint","text":"HyperboloidPoint <: AbstractManifoldPoint\n\nIn the Hyperboloid model of the Hyperbolic mathcal H^n points are represented as vectors in ℝ^n+1 with MinkowskiMetric equal to -1.\n\nThis representation is the default, i.e. AbstractVectors are assumed to have this repesentation.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/hyperbolic.html#Manifolds.HyperboloidTVector","page":"Hyperbolic space","title":"Manifolds.HyperboloidTVector","text":"HyperboloidTVector <: TVector\n\nIn the Hyperboloid model of the Hyperbolic mathcal H^n tangent vctors are represented as vectors in ℝ^n+1 with MinkowskiMetric pX_mathrmM=0 to their base point p.\n\nThis representation is the default, i.e. vectors are assumed to have this repesentation.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/hyperbolic.html#Manifolds.PoincareBallPoint","page":"Hyperbolic space","title":"Manifolds.PoincareBallPoint","text":"PoincareBallPoint <: AbstractManifoldPoint\n\nA point on the Hyperbolic manifold mathcal H^n can be represented as a vector of norm less than one in mathbb R^n.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/hyperbolic.html#Manifolds.PoincareBallTVector","page":"Hyperbolic space","title":"Manifolds.PoincareBallTVector","text":"PoincareBallTVector <: TVector\n\nIn the Poincaré ball model of the Hyperbolic mathcal H^n tangent vectors are represented as vectors in ℝ^n.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/hyperbolic.html#Manifolds.PoincareHalfSpacePoint","page":"Hyperbolic space","title":"Manifolds.PoincareHalfSpacePoint","text":"PoincareHalfSpacePoint <: AbstractManifoldPoint\n\nA point on the Hyperbolic manifold mathcal H^n can be represented as a vector in the half plane, i.e. x ℝ^n with x_d 0.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/hyperbolic.html#Manifolds.PoincareHalfSpaceTVector","page":"Hyperbolic space","title":"Manifolds.PoincareHalfSpaceTVector","text":"PoincareHalfPlaneTVector <: TVector\n\nIn the Poincaré half plane model of the Hyperbolic mathcal H^n tangent vectors are represented as vectors in ℝ^n.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/hyperbolic.html#Base.exp-Tuple{Hyperbolic, Vararg{Any}}","page":"Hyperbolic space","title":"Base.exp","text":"exp(M::Hyperbolic, p, X)\n\nCompute the exponential map on the Hyperbolic space mathcal H^n emanating from p towards X. The formula reads\n\nexp_p X = cosh(sqrtXX_mathrmM)p\n+ sinh(sqrtXX_mathrmM)fracXsqrtXX_mathrmM\n\nwhere cdotcdot_mathrmM denotes the MinkowskiMetric on the embedding, the Lorentzian manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#Base.log-Tuple{Hyperbolic, Vararg{Any}}","page":"Hyperbolic space","title":"Base.log","text":"log(M::Hyperbolic, p, q)\n\nCompute the logarithmic map on the Hyperbolic space mathcal H^n, the tangent vector representing the geodesic starting from p reaches q after time 1. The formula reads for p q\n\nlog_p q = d_mathcal H^n(pq)\nfracq-pq_mathrmM plVert q-pq_mathrmM p rVert_2\n\nwhere cdotcdot_mathrmM denotes the MinkowskiMetric on the embedding, the Lorentzian manifold. For p=q the logarihmic map is equal to the zero vector.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#Manifolds.manifold_volume-Tuple{Hyperbolic}","page":"Hyperbolic space","title":"Manifolds.manifold_volume","text":"manifold_dimension(M::Hyperbolic)\n\nReturn the volume of the hyperbolic space manifold mathcal H^n, i.e. infinity.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#ManifoldsBase.check_point-Tuple{Hyperbolic, Any}","page":"Hyperbolic space","title":"ManifoldsBase.check_point","text":"check_point(M::Hyperbolic, p; kwargs...)\n\nCheck whether p is a valid point on the Hyperbolic M.\n\nFor the HyperboloidPoint or plain vectors this means that, p is a vector of length n+1 with inner product in the embedding of -1, see MinkowskiMetric. The tolerance for the last test can be set using the kwargs....\n\nFor the PoincareBallPoint a valid point is a vector p ℝ^n with a norm stricly less than 1.\n\nFor the PoincareHalfSpacePoint a valid point is a vector from p ℝ^n with a positive last entry, i.e. p_n0\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#ManifoldsBase.check_vector-Tuple{Hyperbolic, Any, Any}","page":"Hyperbolic space","title":"ManifoldsBase.check_vector","text":"check_vector(M::Hyperbolic{n}, p, X; kwargs... )\n\nCheck whether X is a tangent vector to p on the Hyperbolic M, i.e. after check_point(M,p), X has to be of the same dimension as p. The tolerance for the last test can be set using the kwargs....\n\nFor a the hyperboloid model or vectors, X has to be orthogonal to p with respect to the inner product from the embedding, see MinkowskiMetric.\n\nFor a the Poincaré ball as well as the Poincaré half plane model, X has to be a vector from ℝ^n.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#ManifoldsBase.injectivity_radius-Tuple{Hyperbolic}","page":"Hyperbolic space","title":"ManifoldsBase.injectivity_radius","text":"injectivity_radius(M::Hyperbolic)\ninjectivity_radius(M::Hyperbolic, p)\n\nReturn the injectivity radius on the Hyperbolic, which is .\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#ManifoldsBase.is_flat-Tuple{Hyperbolic}","page":"Hyperbolic space","title":"ManifoldsBase.is_flat","text":"is_flat(::Hyperbolic)\n\nReturn false. Hyperbolic is not a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#ManifoldsBase.manifold_dimension-Union{Tuple{Hyperbolic{N}}, Tuple{N}} where N","page":"Hyperbolic space","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::Hyperbolic)\n\nReturn the dimension of the hyperbolic space manifold mathcal H^n, i.e. dim(mathcal H^n) = n.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#ManifoldsBase.parallel_transport_to-Tuple{Hyperbolic, Any, Any, Any}","page":"Hyperbolic space","title":"ManifoldsBase.parallel_transport_to","text":"parallel_transport_to(M::Hyperbolic, p, X, q)\n\nCompute the paralllel transport of the X from the tangent space at p on the Hyperbolic space mathcal H^n to the tangent at q along the geodesic connecting p and q. The formula reads\n\nmathcal P_qpX = X - fraclog_p qX_pd^2_mathcal H^n(pq)\nbigl(log_p q + log_qp bigr)\n\nwhere cdotcdot_p denotes the inner product in the tangent space at p.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#ManifoldsBase.project-Tuple{Hyperbolic, Any, Any}","page":"Hyperbolic space","title":"ManifoldsBase.project","text":"project(M::Hyperbolic, p, X)\n\nPerform an orthogonal projection with respect to the Minkowski inner product of X onto the tangent space at p of the Hyperbolic space M.\n\nThe formula reads\n\nY = X + pX_mathrmM p\n\nwhere cdot cdot_mathrmM denotes the MinkowskiMetric on the embedding, the Lorentzian manifold.\n\nnote: Note\nProjection is only available for the (default) HyperboloidTVector representation, the others don't have such an embedding\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#ManifoldsBase.riemann_tensor-Tuple{Hyperbolic, Vararg{Any, 4}}","page":"Hyperbolic space","title":"ManifoldsBase.riemann_tensor","text":"riemann_tensor(M::Hyperbolic{n}, p, X, Y, Z)\n\nCompute the Riemann tensor R(XY)Z at point p on Hyperbolic M. The formula reads (see e.g., [Lee19] Proposition 8.36)\n\nR(XY)Z = - (langle Z Y rangle X - langle Z X rangle Y)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#Statistics.mean-Tuple{Hyperbolic, Vararg{Any}}","page":"Hyperbolic space","title":"Statistics.mean","text":"mean(\n M::Hyperbolic,\n x::AbstractVector,\n [w::AbstractWeights,]\n method = CyclicProximalPointEstimation();\n kwargs...,\n)\n\nCompute the Riemannian mean of x on the Hyperbolic space using CyclicProximalPointEstimation.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#hyperboloid_model","page":"Hyperbolic space","title":"hyperboloid model","text":"","category":"section"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"Modules = [Manifolds]\nPrivate = false\nPages = [\"manifolds/HyperbolicHyperboloid.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/hyperbolic.html#Base.convert-Tuple{Type{HyperboloidPoint}, PoincareBallPoint}","page":"Hyperbolic space","title":"Base.convert","text":"convert(::Type{HyperboloidPoint}, p::PoincareBallPoint)\nconvert(::Type{AbstractVector}, p::PoincareBallPoint)\n\nconvert a point PoincareBallPoint x (from ℝ^n) from the Poincaré ball model of the Hyperbolic manifold mathcal H^n to a HyperboloidPoint π(p) ℝ^n+1. The isometry is defined by\n\nπ(p) = frac11-lVert p rVert^2\nbeginpmatrix2p_12p_n1+lVert p rVert^2endpmatrix\n\nNote that this is also used, when the type to convert to is a vector.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#Base.convert-Tuple{Type{HyperboloidPoint}, PoincareHalfSpacePoint}","page":"Hyperbolic space","title":"Base.convert","text":"convert(::Type{HyperboloidPoint}, p::PoincareHalfSpacePoint)\nconvert(::Type{AbstractVector}, p::PoincareHalfSpacePoint)\n\nconvert a point PoincareHalfSpacePoint p (from ℝ^n) from the Poincaré half plane model of the Hyperbolic manifold mathcal H^n to a HyperboloidPoint π(p) ℝ^n+1.\n\nThis is done in two steps, namely transforming it to a Poincare ball point and from there further on to a Hyperboloid point.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#Base.convert-Tuple{Type{HyperboloidTVector}, PoincareBallPoint, PoincareBallTVector}","page":"Hyperbolic space","title":"Base.convert","text":"convert(::Type{HyperboloidTVector}, p::PoincareBallPoint, X::PoincareBallTVector)\nconvert(::Type{AbstractVector}, p::PoincareBallPoint, X::PoincareBallTVector)\n\nConvert the PoincareBallTVector X from the tangent space at p to a HyperboloidTVector by computing the push forward of the isometric map, cf. convert(::Type{HyperboloidPoint}, p::PoincareBallPoint).\n\nThe push forward π_*(p) maps from ℝ^n to a subspace of ℝ^n+1, the formula reads\n\nπ_*(p)X = beginpmatrix\n frac2X_11-lVert p rVert^2 + frac4(1-lVert p rVert^2)^2Xpp_1\n \n frac2X_n1-lVert p rVert^2 + frac4(1-lVert p rVert^2)^2Xpp_n\n frac4(1-lVert p rVert^2)^2Xp\nendpmatrix\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#Base.convert-Tuple{Type{HyperboloidTVector}, PoincareHalfSpacePoint, PoincareHalfSpaceTVector}","page":"Hyperbolic space","title":"Base.convert","text":"convert(::Type{HyperboloidTVector}, p::PoincareHalfSpacePoint, X::PoincareHalfSpaceTVector)\nconvert(::Type{AbstractVector}, p::PoincareHalfSpacePoint, X::PoincareHalfSpaceTVector)\n\nconvert a point PoincareHalfSpaceTVector X (from ℝ^n) at p from the Poincaré half plane model of the Hyperbolic manifold mathcal H^n to a HyperboloidTVector π(p) ℝ^n+1.\n\nThis is done in two steps, namely transforming it to a Poincare ball point and from there further on to a Hyperboloid point.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#Base.convert-Tuple{Type{Tuple{HyperboloidPoint, HyperboloidTVector}}, Tuple{PoincareBallPoint, PoincareBallTVector}}","page":"Hyperbolic space","title":"Base.convert","text":"convert(\n ::Type{Tuple{HyperboloidPoint,HyperboloidTVector}}.\n (p,X)::Tuple{PoincareBallPoint,PoincareBallTVector}\n)\nconvert(\n ::Type{Tuple{P,T}},\n (p, X)::Tuple{PoincareBallPoint,PoincareBallTVector},\n) where {P<:AbstractVector, T <: AbstractVector}\n\nConvert a PoincareBallPoint p and a PoincareBallTVector X to a HyperboloidPoint and a HyperboloidTVector simultaneously, see convert(::Type{HyperboloidPoint}, ::PoincareBallPoint) and convert(::Type{HyperboloidTVector}, ::PoincareBallPoint, ::PoincareBallTVector) for the formulae.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#Base.convert-Tuple{Type{Tuple{HyperboloidPoint, HyperboloidTVector}}, Tuple{PoincareHalfSpacePoint, PoincareHalfSpaceTVector}}","page":"Hyperbolic space","title":"Base.convert","text":"convert(\n ::Type{Tuple{HyperboloidPoint,HyperboloidTVector},\n (p,X)::Tuple{PoincareHalfSpacePoint, PoincareHalfSpaceTVector}\n)\nconvert(\n ::Type{Tuple{T,T},\n (p,X)::Tuple{PoincareHalfSpacePoint, PoincareHalfSpaceTVector}\n) where {T<:AbstractVector}\n\nconvert a point PoincareHalfSpaceTVector X (from ℝ^n) at p from the Poincaré half plane model of the Hyperbolic manifold mathcal H^n to a tuple of a HyperboloidPoint and a HyperboloidTVector π(p) ℝ^n+1 simultaneously.\n\nThis is done in two steps, namely transforming it to the Poincare ball model and from there further on to a Hyperboloid.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#ManifoldDiff.riemannian_Hessian-Tuple{Hyperbolic, Vararg{Any, 4}}","page":"Hyperbolic space","title":"ManifoldDiff.riemannian_Hessian","text":"Y = riemannian_Hessian(M::Hyperbolic, p, G, H, X)\nriemannian_Hessian!(M::Hyperbolic, Y, p, G, H, X)\n\nCompute the Riemannian Hessian operatornameHess f(p)X given the Euclidean gradient f(tilde p) in G and the Euclidean Hessian ^2 f(tilde p)tilde X in H, where tilde p tilde X are the representations of pX in the embedding,.\n\nLet mathbfg = mathbfg^-1 = operatornamediag(11-1). Then using Remark 4.1 [Ngu23] the formula reads\n\noperatornameHessf(p)X\n=\noperatornameproj_T_pmathcal Mbigl(\n mathbfg^-1nabla^2f(p)X + Xpmathbfg^-1f(p)_p\nbigr)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#Manifolds.volume_density-Tuple{Hyperbolic, Any, Any}","page":"Hyperbolic space","title":"Manifolds.volume_density","text":"volume_density(M::Hyperbolic, p, X)\n\nCompute volume density function of the hyperbolic manifold. The formula reads (sinh(lVert XrVert)lVert XrVert)^(n-1) where n is the dimension of M. It is derived from Eq. (4.1) in[CLLD22].\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#ManifoldsBase.change_representer-Tuple{Hyperbolic, EuclideanMetric, Any, Any}","page":"Hyperbolic space","title":"ManifoldsBase.change_representer","text":"change_representer(M::Hyperbolic{n}, ::EuclideanMetric, p, X)\n\nChange the Eucliden representer X of a cotangent vector at point p. We only have to correct for the metric, which means that the sign of the last entry changes, since for the result Y we are looking for a tangent vector such that\n\n g_p(YZ) = -y_n+1z_n+1 + sum_i=1^n y_iz_i = sum_i=1^n+1 z_ix_i\n\nholds, which directly yields y_i=x_i for i=1ldotsn and y_n+1=-x_n+1.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#ManifoldsBase.distance-Tuple{Hyperbolic, Any, Any}","page":"Hyperbolic space","title":"ManifoldsBase.distance","text":"distance(M::Hyperbolic, p, q)\ndistance(M::Hyperbolic, p::HyperboloidPoint, q::HyperboloidPoint)\n\nCompute the distance on the Hyperbolic M, which reads\n\nd_mathcal H^n(pq) = operatornameacosh( - p q_mathrmM)\n\nwhere cdotcdot_mathrmM denotes the MinkowskiMetric on the embedding, the Lorentzian manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#ManifoldsBase.get_coordinates-Tuple{Hyperbolic, Any, Any, DefaultOrthonormalBasis}","page":"Hyperbolic space","title":"ManifoldsBase.get_coordinates","text":"get_coordinates(M::Hyperbolic, p, X, ::DefaultOrthonormalBasis)\n\nCompute the coordinates of the vector X with respect to the orthogonalized version of the unit vectors from ℝ^n, where n is the manifold dimension of the Hyperbolic M, utting them intop the tangent space at p and orthonormalizing them.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#ManifoldsBase.get_vector-Tuple{Hyperbolic, Any, Any, DefaultOrthonormalBasis}","page":"Hyperbolic space","title":"ManifoldsBase.get_vector","text":"get_vector(M::Hyperbolic, p, c, ::DefaultOrthonormalBasis)\n\nCompute the vector from the coordinates with respect to the orthogonalized version of the unit vectors from ℝ^n, where n is the manifold dimension of the Hyperbolic M, utting them intop the tangent space at p and orthonormalizing them.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#ManifoldsBase.inner-Tuple{Hyperbolic, Any, Any, Any}","page":"Hyperbolic space","title":"ManifoldsBase.inner","text":"inner(M::Hyperbolic{n}, p, X, Y)\ninner(M::Hyperbolic{n}, p::HyperboloidPoint, X::HyperboloidTVector, Y::HyperboloidTVector)\n\nCmpute the inner product in the Hyperboloid model, i.e. the minkowski_metric in the embedding. The formula reads\n\ng_p(XY) = XY_mathrmM = -X_nY_n + displaystylesum_k=1^n-1 X_kY_k\n\nThis employs the metric of the embedding, see Lorentz space.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#hyperboloid_plot","page":"Hyperbolic space","title":"Visualization of the Hyperboloid","text":"","category":"section"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"For the case of Hyperbolic(2) there is plotting available based on a PlottingRecipe. You can easily plot points, connecting geodesics as well as tangent vectors.","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"note: Note\nThe recipes are only loaded if Plots.jl or RecipesBase.jl is loaded.","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"If we consider a set of points, we can first plot these and their connecting geodesics using the geodesic_interpolation for the points. This variable specifies with how many points a geodesic between two successive points is sampled (per default it's -1, which deactivates geodesics) and the line style is set to be a path.","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"In general you can plot the surface of the hyperboloid either as wireframe (wireframe=true) additionally specifying wires (or wires_x and wires_y) to change the density of wires and a wireframe_color. The same holds for the plot as a surface (which is false by default) and its surface_resolution (or surface_resolution_x or surface_resolution_y) and a surface_color.","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"using Manifolds, Plots\nM = Hyperbolic(2)\npts = [ [0.85*cos(φ), 0.85*sin(φ), sqrt(0.85^2+1)] for φ ∈ range(0,2π,length=11) ]\nscene = plot(M, pts; geodesic_interpolation=100)","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"To just plot the points atop, we can just omit the geodesic_interpolation parameter to obtain a scatter plot. Note that we avoid redrawing the wireframe in the following plot! calls.","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"plot!(scene, M, pts; wireframe=false)","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"We can further generate tangent vectors in these spaces and use a plot for there. Keep in mind that a tangent vector in plotting always requires its base point.","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"pts2 = [ [0.45 .*cos(φ + 6π/11), 0.45 .*sin(φ + 6π/11), sqrt(0.45^2+1) ] for φ ∈ range(0,2π,length=11)]\nvecs = log.(Ref(M),pts,pts2)\nplot!(scene, M, pts, vecs; wireframe=false)","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"Just to illustrate, for the first point the tangent vector is pointing along the following geodesic","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"plot!(scene, M, [pts[1], pts2[1]]; geodesic_interpolation=100, wireframe=false)","category":"page"},{"location":"manifolds/hyperbolic.html#Internal-functions","page":"Hyperbolic space","title":"Internal functions","text":"","category":"section"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"The following functions are available for internal use to construct points in the hyperboloid model","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"Modules = [Manifolds]\nPublic = false\nPages = [\"manifolds/HyperbolicHyperboloid.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/hyperbolic.html#Manifolds._hyperbolize-Tuple{Hyperbolic, Any, Any}","page":"Hyperbolic space","title":"Manifolds._hyperbolize","text":"_hyperbolize(M, p, Y)\n\nGiven the Hyperbolic(n) manifold using the hyperboloid model and a point p thereon, we can put a vector Yin ℝ^n into the tangent space by computing its last component such that for the resulting p we have that its minkowski_metric is pX_mathrmM = 0, i.e. X_n+1 = fractilde p Yp_n+1, where tilde p = (p_1ldotsp_n).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#Manifolds._hyperbolize-Tuple{Hyperbolic, Any}","page":"Hyperbolic space","title":"Manifolds._hyperbolize","text":"_hyperbolize(M, q)\n\nGiven the Hyperbolic(n) manifold using the hyperboloid model, a point from the qin ℝ^n can be set onto the manifold by computing its last component such that for the resulting p we have that its minkowski_metric is pp_mathrmM = - 1, i.e. p_n+1 = sqrtlVert q rVert^2 - 1\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#poincare_ball","page":"Hyperbolic space","title":"Poincaré ball model","text":"","category":"section"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"Modules = [Manifolds]\nPages = [\"manifolds/HyperbolicPoincareBall.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/hyperbolic.html#Base.convert-Tuple{Type{PoincareBallPoint}, Any}","page":"Hyperbolic space","title":"Base.convert","text":"convert(::Type{PoincareBallPoint}, p::HyperboloidPoint)\nconvert(::Type{PoincareBallPoint}, p::T) where {T<:AbstractVector}\n\nconvert a HyperboloidPoint pℝ^n+1 from the hyperboloid model of the Hyperbolic manifold mathcal H^n to a PoincareBallPoint π(p)ℝ^n in the Poincaré ball model. The isometry is defined by\n\nπ(p) = frac11+p_n+1 beginpmatrixp_1p_nendpmatrix\n\nNote that this is also used, when x is a vector.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#Base.convert-Tuple{Type{PoincareBallPoint}, PoincareHalfSpacePoint}","page":"Hyperbolic space","title":"Base.convert","text":"convert(::Type{PoincareBallPoint}, p::PoincareHalfSpacePoint)\n\nconvert a point PoincareHalfSpacePoint p (from ℝ^n) from the Poincaré half plane model of the Hyperbolic manifold mathcal H^n to a PoincareBallPoint π(p) ℝ^n. Denote by tilde p = (p_1ldotsp_d-1)^mathrmT. Then the isometry is defined by\n\nπ(p) = frac1lVert tilde p rVert^2 + (p_n+1)^2\nbeginpmatrix2p_12p_n-1lVert prVert^2 - 1endpmatrix\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#Base.convert-Tuple{Type{PoincareBallTVector}, Any}","page":"Hyperbolic space","title":"Base.convert","text":"convert(::Type{PoincareBallTVector}, p::HyperboloidPoint, X::HyperboloidTVector)\nconvert(::Type{PoincareBallTVector}, p::P, X::T) where {P<:AbstractVector, T<:AbstractVector}\n\nconvert a HyperboloidTVector X at p to a PoincareBallTVector on the Hyperbolic manifold mathcal H^n by computing the push forward π_*(p)X of the isometry π that maps from the Hyperboloid to the Poincaré ball, cf. convert(::Type{PoincareBallPoint}, ::HyperboloidPoint).\n\nThe formula reads\n\nπ_*(p)X = frac1p_n+1+1Bigl(tilde X - fracX_n+1p_n+1+1tilde p Bigl)\n\nwhere tilde X = beginpmatrixX_1X_nendpmatrix and tilde p = beginpmatrixp_1p_nendpmatrix.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#Base.convert-Tuple{Type{PoincareBallTVector}, PoincareHalfSpacePoint, PoincareHalfSpaceTVector}","page":"Hyperbolic space","title":"Base.convert","text":"convert(\n ::Type{PoincareBallTVector},\n p::PoincareHalfSpacePoint,\n X::PoincareHalfSpaceTVector\n)\n\nconvert a PoincareHalfSpaceTVector X at p to a PoincareBallTVector on the Hyperbolic manifold mathcal H^n by computing the push forward π_*(p)X of the isometry π that maps from the Poincaré half space to the Poincaré ball, cf. convert(::Type{PoincareBallPoint}, ::PoincareHalfSpacePoint).\n\nThe formula reads\n\nπ_*(p)X =\nfrac1lVert tilde prVert^2 + (1+p_n)^2\nbeginpmatrix\n2X_1\n\n2X_n-1\n2Xp\nendpmatrix\n-\nfrac2(lVert tilde prVert^2 + (1+p_n)^2)^2\nbeginpmatrix\n2p_1(Xp+X_n)\n\n2p_n-1(Xp+X_n)\n(lVert p rVert^2-1)(Xp+X_n)\nendpmatrix\n\nwhere tilde p = beginpmatrixp_1p_n-1endpmatrix.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#Base.convert-Tuple{Type{Tuple{PoincareBallPoint, PoincareBallTVector}}, Tuple{HyperboloidPoint, HyperboloidTVector}}","page":"Hyperbolic space","title":"Base.convert","text":"convert(\n ::Type{Tuple{PoincareBallPoint,PoincareBallTVector}},\n (p,X)::Tuple{HyperboloidPoint,HyperboloidTVector}\n)\nconvert(\n ::Type{Tuple{PoincareBallPoint,PoincareBallTVector}},\n (p, X)::Tuple{P,T},\n) where {P<:AbstractVector, T <: AbstractVector}\n\nConvert a HyperboloidPoint p and a HyperboloidTVector X to a PoincareBallPoint and a PoincareBallTVector simultaneously, see convert(::Type{PoincareBallPoint}, ::HyperboloidPoint) and convert(::Type{PoincareBallTVector}, ::HyperboloidPoint, ::HyperboloidTVector) for the formulae.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#Base.convert-Tuple{Type{Tuple{PoincareBallPoint, PoincareBallTVector}}, Tuple{PoincareHalfSpacePoint, PoincareHalfSpaceTVector}}","page":"Hyperbolic space","title":"Base.convert","text":"convert(\n ::Type{Tuple{PoincareBallPoint,PoincareBallTVector}},\n (p,X)::Tuple{HyperboloidPoint,HyperboloidTVector}\n)\nconvert(\n ::Type{Tuple{PoincareBallPoint,PoincareBallTVector}},\n (p, X)::Tuple{T,T},\n) where {T <: AbstractVector}\n\nConvert a PoincareHalfSpacePoint p and a PoincareHalfSpaceTVector X to a PoincareBallPoint and a PoincareBallTVector simultaneously, see convert(::Type{PoincareBallPoint}, ::PoincareHalfSpacePoint) and convert(::Type{PoincareBallTVector}, ::PoincareHalfSpacePoint, ::PoincareHalfSpaceTVector) for the formulae.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#ManifoldsBase.change_metric-Tuple{Hyperbolic, EuclideanMetric, PoincareBallPoint, PoincareBallTVector}","page":"Hyperbolic space","title":"ManifoldsBase.change_metric","text":"change_metric(M::Hyperbolic{n}, ::EuclideanMetric, p::PoincareBallPoint, X::PoincareBallTVector)\n\nSince in the metric we always have the term α = frac21-sum_i=1^n p_i^2 per element, the correction for the metric reads Z = frac1αX.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#ManifoldsBase.change_representer-Tuple{Hyperbolic, EuclideanMetric, PoincareBallPoint, PoincareBallTVector}","page":"Hyperbolic space","title":"ManifoldsBase.change_representer","text":"change_representer(M::Hyperbolic{n}, ::EuclideanMetric, p::PoincareBallPoint, X::PoincareBallTVector)\n\nSince in the metric we have the term α = frac21-sum_i=1^n p_i^2 per element, the correction for the gradient reads Y = frac1α^2X.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#ManifoldsBase.distance-Tuple{Hyperbolic, PoincareBallPoint, PoincareBallPoint}","page":"Hyperbolic space","title":"ManifoldsBase.distance","text":"distance(::Hyperbolic, p::PoincareBallPoint, q::PoincareBallPoint)\n\nCompute the distance on the Hyperbolic manifold mathcal H^n represented in the Poincaré ball model. The formula reads\n\nd_mathcal H^n(pq) =\noperatornameacoshBigl(\n 1 + frac2lVert p - q rVert^2(1-lVert prVert^2)(1-lVert qrVert^2)\nBigr)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#ManifoldsBase.inner-Tuple{Hyperbolic, PoincareBallPoint, PoincareBallTVector, PoincareBallTVector}","page":"Hyperbolic space","title":"ManifoldsBase.inner","text":"inner(::Hyperbolic, p::PoincareBallPoint, X::PoincareBallTVector, Y::PoincareBallTVector)\n\nCompute the inner producz in the Poincaré ball model. The formula reads\n\ng_p(XY) = frac4(1-lVert p rVert^2)^2 X Y \n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#ManifoldsBase.project-Tuple{Hyperbolic, PoincareBallPoint, PoincareBallTVector}","page":"Hyperbolic space","title":"ManifoldsBase.project","text":"project(::Hyperbolic, ::PoincareBallPoint, ::PoincareBallTVector)\n\nprojction of tangent vectors in the Poincaré ball model is just the identity, since the tangent space consists of all ℝ^n.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#poincare_ball_plot","page":"Hyperbolic space","title":"Visualization of the Poincaré ball","text":"","category":"section"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"For the case of Hyperbolic(2) there is a plotting available based on a PlottingRecipe you can easily plot points, connecting geodesics as well as tangent vectors.","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"note: Note\nThe recipes are only loaded if Plots.jl or RecipesBase.jl is loaded.","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"If we consider a set of points, we can first plot these and their connecting geodesics using the geodesic_interpolation For the points. This variable specifies with how many points a geodesic between two successive points is sampled (per default it's -1, which deactivates geodesics) and the line style is set to be a path. Another keyword argument added is the border of the Poincaré disc, namely circle_points = 720 resolution of the drawn boundary (every hlaf angle) as well as its color, hyperbolic_border_color = RGBA(0.0, 0.0, 0.0, 1.0).","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"using Manifolds, Plots\nM = Hyperbolic(2)\npts = PoincareBallPoint.( [0.85 .* [cos(φ), sin(φ)] for φ ∈ range(0,2π,length=11)])\nscene = plot(M, pts, geodesic_interpolation = 100)","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"To just plot the points atop, we can just omit the geodesic_interpolation parameter to obtain a scatter plot","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"plot!(scene, M, pts)","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"We can further generate tangent vectors in these spaces and use a plot for there. Keep in mind, that a tangent vector in plotting always requires its base point","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"pts2 = PoincareBallPoint.( [0.45 .* [cos(φ + 6π/11), sin(φ + 6π/11)] for φ ∈ range(0,2π,length=11)])\nvecs = log.(Ref(M),pts,pts2)\nplot!(scene, M, pts,vecs)","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"Just to illustrate, for the first point the tangent vector is pointing along the following geodesic","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"plot!(scene, M, [pts[1], pts2[1]], geodesic_interpolation=100)","category":"page"},{"location":"manifolds/hyperbolic.html#poincare_halfspace","page":"Hyperbolic space","title":"Poincaré half space model","text":"","category":"section"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"Modules = [Manifolds]\nPages = [\"manifolds/HyperbolicPoincareHalfspace.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/hyperbolic.html#Base.convert-Tuple{Type{PoincareHalfSpacePoint}, Any}","page":"Hyperbolic space","title":"Base.convert","text":"convert(::Type{PoincareHalfSpacePoint}, p::Hyperboloid)\nconvert(::Type{PoincareHalfSpacePoint}, p)\n\nconvert a HyperboloidPoint or Vectorp (from ℝ^n+1) from the Hyperboloid model of the Hyperbolic manifold mathcal H^n to a PoincareHalfSpacePoint π(x) ℝ^n.\n\nThis is done in two steps, namely transforming it to a Poincare ball point and from there further on to a PoincareHalfSpacePoint point.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#Base.convert-Tuple{Type{PoincareHalfSpacePoint}, PoincareBallPoint}","page":"Hyperbolic space","title":"Base.convert","text":"convert(::Type{PoincareHalfSpacePoint}, p::PoincareBallPoint)\n\nconvert a point PoincareBallPoint p (from ℝ^n) from the Poincaré ball model of the Hyperbolic manifold mathcal H^n to a PoincareHalfSpacePoint π(p) ℝ^n. Denote by tilde p = (p_1ldotsp_n-1). Then the isometry is defined by\n\nπ(p) = frac1lVert tilde p rVert^2 - (p_n-1)^2\nbeginpmatrix2p_12p_n-11-lVert prVert^2endpmatrix\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#Base.convert-Tuple{Type{PoincareHalfSpaceTVector}, Any}","page":"Hyperbolic space","title":"Base.convert","text":"convert(::Type{PoincareHalfSpaceTVector}, p::HyperboloidPoint, ::HyperboloidTVector)\nconvert(::Type{PoincareHalfSpaceTVector}, p::P, X::T) where {P<:AbstractVector, T<:AbstractVector}\n\nconvert a HyperboloidTVector X at p to a PoincareHalfSpaceTVector on the Hyperbolic manifold mathcal H^n by computing the push forward π_*(p)X of the isometry π that maps from the Hyperboloid to the Poincaré half space, cf. convert(::Type{PoincareHalfSpacePoint}, ::HyperboloidPoint).\n\nThis is done similarly to the approach there, i.e. by using the Poincaré ball model as an intermediate step.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#Base.convert-Tuple{Type{PoincareHalfSpaceTVector}, PoincareBallPoint, PoincareBallTVector}","page":"Hyperbolic space","title":"Base.convert","text":"convert(::Type{PoincareHalfSpaceTVector}, p::PoincareBallPoint, X::PoincareBallTVector)\n\nconvert a PoincareBallTVector X at p to a PoincareHalfSpacePoint on the Hyperbolic manifold mathcal H^n by computing the push forward π_*(p)X of the isometry π that maps from the Poincaré ball to the Poincaré half space, cf. convert(::Type{PoincareHalfSpacePoint}, ::PoincareBallPoint).\n\nThe formula reads\n\nπ_*(p)X =\nfrac1lVert tilde prVert^2 + (1-p_n)^2\nbeginpmatrix\n2X_1\n\n2X_n-1\n-2Xp\nendpmatrix\n-\nfrac2(lVert tilde prVert^2 + (1-p_n)^2)^2\nbeginpmatrix\n2p_1(Xp-X_n)\n\n2p_n-1(Xp-X_n)\n(lVert p rVert^2-1)(Xp-X_n)\nendpmatrix\n\nwhere tilde p = beginpmatrixp_1p_n-1endpmatrix.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#Base.convert-Tuple{Type{Tuple{PoincareHalfSpacePoint, PoincareHalfSpaceTVector}}, Tuple{HyperboloidPoint, HyperboloidTVector}}","page":"Hyperbolic space","title":"Base.convert","text":"convert(\n ::Type{Tuple{PoincareHalfSpacePoint,PoincareHalfSpaceTVector}},\n (p,X)::Tuple{HyperboloidPoint,HyperboloidTVector}\n)\nconvert(\n ::Type{Tuple{PoincareHalfSpacePoint,PoincareHalfSpaceTVector}},\n (p, X)::Tuple{P,T},\n) where {P<:AbstractVector, T <: AbstractVector}\n\nConvert a HyperboloidPoint p and a HyperboloidTVector X to a PoincareHalfSpacePoint and a PoincareHalfSpaceTVector simultaneously, see convert(::Type{PoincareHalfSpacePoint}, ::HyperboloidPoint) and convert(::Type{PoincareHalfSpaceTVector}, ::Tuple{HyperboloidPoint,HyperboloidTVector}) for the formulae.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#Base.convert-Tuple{Type{Tuple{PoincareHalfSpacePoint, PoincareHalfSpaceTVector}}, Tuple{PoincareBallPoint, PoincareBallTVector}}","page":"Hyperbolic space","title":"Base.convert","text":"convert(\n ::Type{Tuple{PoincareHalfSpacePoint,PoincareHalfSpaceTVector}},\n (p,X)::Tuple{PoincareBallPoint,PoincareBallTVector}\n)\n\nConvert a PoincareBallPoint p and a PoincareBallTVector X to a PoincareHalfSpacePoint and a PoincareHalfSpaceTVector simultaneously, see convert(::Type{PoincareHalfSpacePoint}, ::PoincareBallPoint) and convert(::Type{PoincareHalfSpaceTVector}, ::PoincareBallPoint,::PoincareBallTVector) for the formulae.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#ManifoldsBase.distance-Tuple{Hyperbolic, PoincareHalfSpacePoint, PoincareHalfSpacePoint}","page":"Hyperbolic space","title":"ManifoldsBase.distance","text":"distance(::Hyperbolic, p::PoincareHalfSpacePoint, q::PoincareHalfSpacePoint)\n\nCompute the distance on the Hyperbolic manifold mathcal H^n represented in the Poincaré half space model. The formula reads\n\nd_mathcal H^n(pq) = operatornameacoshBigl( 1 + fraclVert p - q rVert^22 p_n q_n Bigr)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#ManifoldsBase.inner-Tuple{Hyperbolic, PoincareHalfSpacePoint, PoincareHalfSpaceTVector, PoincareHalfSpaceTVector}","page":"Hyperbolic space","title":"ManifoldsBase.inner","text":"inner(\n ::Hyperbolic{n},\n p::PoincareHalfSpacePoint,\n X::PoincareHalfSpaceTVector,\n Y::PoincareHalfSpaceTVector\n)\n\nCompute the inner product in the Poincaré half space model. The formula reads\n\ng_p(XY) = fracXYp_n^2\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#ManifoldsBase.project-Tuple{Hyperbolic, PoincareHalfSpaceTVector}","page":"Hyperbolic space","title":"ManifoldsBase.project","text":"project(::Hyperbolic, ::PoincareHalfSpacePoint ::PoincareHalfSpaceTVector)\n\nprojction of tangent vectors in the Poincaré half space model is just the identity, since the tangent space consists of all ℝ^n.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/hyperbolic.html#poincare_half_plane_plot","page":"Hyperbolic space","title":"Visualization on the Poincaré half plane","text":"","category":"section"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"For the case of Hyperbolic(2) there is a plotting available based on a PlottingRecipe you can easily plot points, connecting geodesics as well as tangent vectors.","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"note: Note\nThe recipes are only loaded if Plots.jl or RecipesBase.jl is loaded.","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"We again have two different recipes, one for points, one for tangent vectors, where the first one again can be equipped with geodesics between the points. In the following example we generate 7 points on an ellipse in the Hyperboloid model.","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"using Manifolds, Plots\nM = Hyperbolic(2)\npre_pts = [2.0 .* [5.0*cos(φ), sin(φ)] for φ ∈ range(0,2π,length=7)]\npts = convert.(\n Ref(PoincareHalfSpacePoint),\n Manifolds._hyperbolize.(Ref(M), pre_pts)\n)\nscene = plot(M, pts, geodesic_interpolation = 100)","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"To just plot the points atop, we can just omit the geodesic_interpolation parameter to obtain a scatter plot","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"plot!(scene, M, pts)","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"We can further generate tangent vectors in these spaces and use a plot for there. Keep in mind, that a tangent vector in plotting always requires its base point. Here we would like to look at the tangent vectors pointing to the origin","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"origin = PoincareHalfSpacePoint([0.0,1.0])\nvecs = [log(M,p,origin) for p ∈ pts]\nscene = plot!(scene, M, pts, vecs)","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"And we can again look at the corresponding geodesics, for example","category":"page"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"plot!(scene, M, [pts[1], origin], geodesic_interpolation=100)\nplot!(scene, M, [pts[2], origin], geodesic_interpolation=100)","category":"page"},{"location":"manifolds/hyperbolic.html#Literature","page":"Hyperbolic space","title":"Literature","text":"","category":"section"},{"location":"manifolds/hyperbolic.html","page":"Hyperbolic space","title":"Hyperbolic space","text":"
    [CLLD22]
    \n
    \n
    E. Chevallier, D. Li, Y. Lu and D. B. Dunson. Exponential-wrapped distributions on symmetric spaces. ArXiv Preprint (2022).
    \n
    [Lee19]
    \n
    \n
    J. M. Lee. Introduction to Riemannian Manifolds. Springer Cham (2019).
    \n
    [Ngu23]
    \n
    \n
    D. Nguyen. Operator-Valued Formulas for Riemannian Gradient and Hessian and Families of Tractable Metrics in Riemannian Optimization. Journal of Optimization Theory and Applications 198, 135–164 (2023), arXiv:2009.10159.
    \n
    \n
    ","category":"page"},{"location":"manifolds/projectivespace.html#Projective-space","page":"Projective space","title":"Projective space","text":"","category":"section"},{"location":"manifolds/projectivespace.html","page":"Projective space","title":"Projective space","text":"Modules = [Manifolds]\nPages = [\"manifolds/ProjectiveSpace.jl\"]\nOrder = [:type,:function]","category":"page"},{"location":"manifolds/projectivespace.html#Manifolds.AbstractProjectiveSpace","page":"Projective space","title":"Manifolds.AbstractProjectiveSpace","text":"AbstractProjectiveSpace{𝔽} <: AbstractDecoratorManifold{𝔽}\n\nAn abstract type to represent a projective space over 𝔽 that is represented isometrically in the embedding.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/projectivespace.html#Manifolds.ArrayProjectiveSpace","page":"Projective space","title":"Manifolds.ArrayProjectiveSpace","text":"ArrayProjectiveSpace{T<:Tuple,𝔽} <: AbstractProjectiveSpace{𝔽}\n\nThe projective space 𝔽ℙ^n₁n₂nᵢ is the manifold of all lines in 𝔽^n₁n₂nᵢ. The default representation is in the embedding, i.e. as unit (Frobenius) norm matrices in 𝔽^n₁n₂nᵢ:\n\n𝔽ℙ^n_1 n_2 n_i = bigl p 𝔽^n_1 n_2 n_i big lVert p rVert_mathrmF = 1 λ 𝔽 λ = 1 p p λ bigr\n\nwhere p is an equivalence class of points p, sim indicates equivalence, and lVert rVert_mathrmF is the Frobenius norm. Note that unlike ProjectiveSpace, the argument for ArrayProjectiveSpace is given by the size of the embedding. This means that ProjectiveSpace(2) and ArrayProjectiveSpace(3) are the same manifold. Additionally, ArrayProjectiveSpace(n,1;field=𝔽) and Grassmann(n,1;field=𝔽) are the same.\n\nThe tangent space at point p is given by\n\nT_p 𝔽ℙ^n_1 n_2 n_i = bigl X 𝔽^n_1 n_2 n_i pX_mathrmF = 0 bigr \n\nwhere _mathrmF denotes the (Frobenius) inner product in the embedding 𝔽^n_1 n_2 n_i.\n\nConstructor\n\nArrayProjectiveSpace(n₁,n₂,...,nᵢ; field=ℝ)\n\nGenerate the projective space 𝔽ℙ^n_1 n_2 n_i, defaulting to the real projective space, where field can also be used to generate the complex- and right-quaternionic projective spaces.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/projectivespace.html#Manifolds.ProjectiveSpace","page":"Projective space","title":"Manifolds.ProjectiveSpace","text":"ProjectiveSpace{n,𝔽} <: AbstractProjectiveSpace{𝔽}\n\nThe projective space 𝔽ℙ^n is the manifold of all lines in 𝔽^n+1. The default representation is in the embedding, i.e. as unit norm vectors in 𝔽^n+1:\n\n𝔽ℙ^n = bigl p 𝔽^n+1 big lVert p rVert = 1 λ 𝔽 λ = 1 p p λ bigr\n\nwhere p is an equivalence class of points p, and indicates equivalence. For example, the real projective space ℝℙ^n is represented as the unit sphere 𝕊^n, where antipodal points are considered equivalent.\n\nThe tangent space at point p is given by\n\nT_p 𝔽ℙ^n = bigl X 𝔽^n+1 big pX = 0 bigr \n\nwhere denotes the inner product in the embedding 𝔽^n+1.\n\nWhen 𝔽 = ℍ, this implementation of ℍℙ^n is the right-quaternionic projective space.\n\nConstructor\n\nProjectiveSpace(n[, field=ℝ])\n\nGenerate the projective space 𝔽ℙ^n 𝔽^n+1, defaulting to the real projective space ℝℙ^n, where field can also be used to generate the complex- and right-quaternionic projective spaces.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/projectivespace.html#Base.log-Tuple{AbstractProjectiveSpace, Any, Any}","page":"Projective space","title":"Base.log","text":"log(M::AbstractProjectiveSpace, p, q)\n\nCompute the logarithmic map on AbstractProjectiveSpace M$ = 𝔽ℙ^n$, i.e. the tangent vector whose corresponding geodesic starting from p reaches q after time 1 on M. The formula reads\n\nlog_p q = (q λ - cos θ p) fracθsin θ\n\nwhere θ = arccosq p_mathrmF is the distance between p and q, _mathrmF is the Frobenius inner product, and λ = fracq p_mathrmFq p_mathrmF 𝔽 is the unit scalar that minimizes d_𝔽^n+1(p - q λ). That is, q λ is the member of the equivalence class q that is closest to p in the embedding. As a result, exp_p circ log_p colon q q λ.\n\nThe logarithmic maps for the real AbstractSphere 𝕊^n and the real projective space ℝℙ^n are identical when p and q are in the same hemisphere.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/projectivespace.html#Manifolds.manifold_volume-Tuple{AbstractProjectiveSpace{ℝ}}","page":"Projective space","title":"Manifolds.manifold_volume","text":"manifold_volume(M::AbstractProjectiveSpace{ℝ})\n\nVolume of the n-dimensional AbstractProjectiveSpace M. The formula reads:\n\nfracpi^(n+1)2Γ((n+1)2)\n\nwhere Γ denotes the Gamma function. For details see [BST03].\n\n\n\n\n\n","category":"method"},{"location":"manifolds/projectivespace.html#Manifolds.uniform_distribution-Union{Tuple{n}, Tuple{ProjectiveSpace{n, ℝ}, Any}} where n","page":"Projective space","title":"Manifolds.uniform_distribution","text":"uniform_distribution(M::ProjectiveSpace{n,ℝ}, p) where {n}\n\nUniform distribution on given ProjectiveSpace M. Generated points will be of similar type as p.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/projectivespace.html#ManifoldsBase._isapprox-Tuple{AbstractProjectiveSpace, Any, Any}","page":"Projective space","title":"ManifoldsBase._isapprox","text":"isapprox(M::AbstractProjectiveSpace, p, q; kwargs...)\n\nCheck that points p and q on the AbstractProjectiveSpace M=𝔽ℙ^n are members of the same equivalence class, i.e. that p = q λ for some element λ 𝔽 with unit absolute value, that is, λ = 1. This is equivalent to the Riemannian distance being 0.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/projectivespace.html#ManifoldsBase.check_point-Tuple{AbstractProjectiveSpace, Any}","page":"Projective space","title":"ManifoldsBase.check_point","text":"check_point(M::AbstractProjectiveSpace, p; kwargs...)\n\nCheck whether p is a valid point on the AbstractProjectiveSpace M, i.e. that it has the same size as elements of the embedding and has unit Frobenius norm. The tolerance for the norm check can be set using the kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/projectivespace.html#ManifoldsBase.check_vector-Tuple{AbstractProjectiveSpace, Any, Any}","page":"Projective space","title":"ManifoldsBase.check_vector","text":"check_vector(M::AbstractProjectiveSpace, p, X; kwargs... )\n\nCheck whether X is a tangent vector in the tangent space of p on the AbstractProjectiveSpace M, i.e. that X has the same size as elements of the tangent space of the embedding and that the Frobenius inner product p X_mathrmF = 0.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/projectivespace.html#ManifoldsBase.distance-Tuple{AbstractProjectiveSpace, Any, Any}","page":"Projective space","title":"ManifoldsBase.distance","text":"distance(M::AbstractProjectiveSpace, p, q)\n\nCompute the Riemannian distance on AbstractProjectiveSpace M=𝔽ℙ^n between points p and q, i.e.\n\nd_𝔽ℙ^n(p q) = arccosbigl p q_mathrmF bigr\n\nNote that this definition is similar to that of the AbstractSphere. However, the absolute value ensures that all equivalent p and q have the same pairwise distance.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/projectivespace.html#ManifoldsBase.get_coordinates-Tuple{AbstractProjectiveSpace{ℝ}, Any, Any, DefaultOrthonormalBasis}","page":"Projective space","title":"ManifoldsBase.get_coordinates","text":"get_coordinates(M::AbstractProjectiveSpace, p, X, B::DefaultOrthonormalBasis{ℝ})\n\nRepresent the tangent vector X at point p from the AbstractProjectiveSpace M = 𝔽ℙ^n in an orthonormal basis by unitarily transforming the hyperplane containing X, whose normal is p, to the hyperplane whose normal is the x-axis.\n\nGiven q = p overlineλ + x, where λ = fracx p_mathrmFx p_mathrmF, _mathrmF denotes the Frobenius inner product, and overline denotes complex or quaternionic conjugation, the formula for Y is\n\nbeginpmatrix0 Yendpmatrix = left(X - qfrac2 q X_mathrmFq q_mathrmFright)overlineλ\n\n\n\n\n\n","category":"method"},{"location":"manifolds/projectivespace.html#ManifoldsBase.get_vector-Tuple{AbstractProjectiveSpace, Any, Any, DefaultOrthonormalBasis{ℝ}}","page":"Projective space","title":"ManifoldsBase.get_vector","text":"get_vector(M::AbstractProjectiveSpace, p, X, B::DefaultOrthonormalBasis{ℝ})\n\nConvert a one-dimensional vector of coefficients X in the basis B of the tangent space at p on the AbstractProjectiveSpace M=𝔽ℙ^n to a tangent vector Y at p by unitarily transforming the hyperplane containing X, whose normal is the x-axis, to the hyperplane whose normal is p.\n\nGiven q = p overlineλ + x, where λ = fracx p_mathrmFx p_mathrmF, _mathrmF denotes the Frobenius inner product, and overline denotes complex or quaternionic conjugation, the formula for Y is\n\nY = left(X - qfrac2 leftlangle q beginpmatrix0 Xendpmatrixrightrangle_mathrmFq q_mathrmFright) λ\n\n\n\n\n\n","category":"method"},{"location":"manifolds/projectivespace.html#ManifoldsBase.inverse_retract-Tuple{AbstractProjectiveSpace, Any, Any, Union{PolarInverseRetraction, ProjectionInverseRetraction, QRInverseRetraction}}","page":"Projective space","title":"ManifoldsBase.inverse_retract","text":"inverse_retract(M::AbstractProjectiveSpace, p, q, method::ProjectionInverseRetraction)\ninverse_retract(M::AbstractProjectiveSpace, p, q, method::PolarInverseRetraction)\ninverse_retract(M::AbstractProjectiveSpace, p, q, method::QRInverseRetraction)\n\nCompute the equivalent inverse retraction ProjectionInverseRetraction, PolarInverseRetraction, and QRInverseRetraction on the AbstractProjectiveSpace manifold M=𝔽ℙ^n, i.e.\n\noperatornameretr_p^-1 q = q frac1p q_mathrmF - p\n\nwhere _mathrmF is the Frobenius inner product.\n\nNote that this inverse retraction is equivalent to the three corresponding inverse retractions on Grassmann(n+1,1,𝔽), where the three inverse retractions in this case coincide. For ℝℙ^n, it is the same as the ProjectionInverseRetraction on the real Sphere.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/projectivespace.html#ManifoldsBase.is_flat-Tuple{AbstractProjectiveSpace}","page":"Projective space","title":"ManifoldsBase.is_flat","text":"is_flat(M::AbstractProjectiveSpace)\n\nReturn true if AbstractProjectiveSpace is of dimension 1 and false otherwise.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/projectivespace.html#ManifoldsBase.manifold_dimension-Union{Tuple{AbstractProjectiveSpace{𝔽}}, Tuple{𝔽}} where 𝔽","page":"Projective space","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::AbstractProjectiveSpace{𝔽}) where {𝔽}\n\nReturn the real dimension of the AbstractProjectiveSpace M, respectively i.e. the real dimension of the embedding minus the real dimension of the field 𝔽.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/projectivespace.html#ManifoldsBase.parallel_transport_direction-Tuple{AbstractProjectiveSpace, Any, Any, Any}","page":"Projective space","title":"ManifoldsBase.parallel_transport_direction","text":"parallel_transport_direction(M::AbstractProjectiveSpace, p, X, d)\n\nParallel transport a vector X from the tangent space at a point p on the AbstractProjectiveSpace M along the geodesic in the direction indicated by the tangent vector d, i.e.\n\nmathcalP_exp_p (d) p(X) = X - left(p fracsin θθ + d frac1 - cos θθ^2right) d X_p\n\nwhere θ = lVert d rVert, and _p is the inner product at the point p. For the real projective space, this is equivalent to the same vector transport on the real AbstractSphere.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/projectivespace.html#ManifoldsBase.parallel_transport_to-Tuple{AbstractProjectiveSpace, Any, Any, Any}","page":"Projective space","title":"ManifoldsBase.parallel_transport_to","text":"parallel_transport_to(M::AbstractProjectiveSpace, p, X, q)\n\nParallel transport a vector X from the tangent space at a point p on the AbstractProjectiveSpace M=𝔽ℙ^n to the tangent space at another point q.\n\nThis implementation proceeds by transporting X to T_q λ M using the same approach as parallel_transport_direction, where λ = fracq p_mathrmFq p_mathrmF 𝔽 is the unit scalar that takes q to the member q λ of its equivalence class q closest to p in the embedding. It then maps the transported vector from T_q λ M to T_q M. The resulting transport to T_q M is\n\nmathcalP_q p(X) = left(X - left(p fracsin θθ + d frac1 - cos θθ^2right) d X_pright) overlineλ\n\nwhere d = log_p q is the direction of the transport, θ = lVert d rVert_p is the distance between p and q, and overline denotes complex or quaternionic conjugation.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/projectivespace.html#ManifoldsBase.project-Tuple{AbstractProjectiveSpace, Any, Any}","page":"Projective space","title":"ManifoldsBase.project","text":"project(M::AbstractProjectiveSpace, p, X)\n\nOrthogonally project the point X onto the tangent space at p on the AbstractProjectiveSpace M:\n\noperatornameproj_p (X) = X - pp X_mathrmF\n\nwhere _mathrmF denotes the Frobenius inner product. For the real AbstractSphere and AbstractProjectiveSpace, this projection is the same.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/projectivespace.html#ManifoldsBase.project-Tuple{AbstractProjectiveSpace, Any}","page":"Projective space","title":"ManifoldsBase.project","text":"project(M::AbstractProjectiveSpace, p)\n\nOrthogonally project the point p from the embedding onto the AbstractProjectiveSpace M:\n\noperatornameproj(p) = fracplVert p rVert_mathrmF\n\nwhere lVert rVert_mathrmF denotes the Frobenius norm. This is identical to projection onto the AbstractSphere.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/projectivespace.html#ManifoldsBase.representation_size-Union{Tuple{ArrayProjectiveSpace{N}}, Tuple{N}} where N","page":"Projective space","title":"ManifoldsBase.representation_size","text":"representation_size(M::AbstractProjectiveSpace)\n\nReturn the size points on the AbstractProjectiveSpace M are represented as, i.e., the representation size of the embedding.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/projectivespace.html#ManifoldsBase.retract-Tuple{AbstractProjectiveSpace, Any, Any, Union{PolarRetraction, ProjectionRetraction, QRRetraction}}","page":"Projective space","title":"ManifoldsBase.retract","text":"retract(M::AbstractProjectiveSpace, p, X, method::ProjectionRetraction)\nretract(M::AbstractProjectiveSpace, p, X, method::PolarRetraction)\nretract(M::AbstractProjectiveSpace, p, X, method::QRRetraction)\n\nCompute the equivalent retraction ProjectionRetraction, PolarRetraction, and QRRetraction on the AbstractProjectiveSpace manifold M=𝔽ℙ^n, i.e.\n\noperatornameretr_p X = operatornameproj_p(p + X)\n\nNote that this retraction is equivalent to the three corresponding retractions on Grassmann(n+1,1,𝔽), where in this case they coincide. For ℝℙ^n, it is the same as the ProjectionRetraction on the real Sphere.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/projectivespace.html#Statistics.mean-Tuple{AbstractProjectiveSpace, Vararg{Any}}","page":"Projective space","title":"Statistics.mean","text":"mean(\n M::AbstractProjectiveSpace,\n x::AbstractVector,\n [w::AbstractWeights,]\n method = GeodesicInterpolationWithinRadius(π/4);\n kwargs...,\n)\n\nCompute the Riemannian mean of points in vector x using GeodesicInterpolationWithinRadius.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#VectorBundleSection","page":"Vector bundle","title":"Vector bundles","text":"","category":"section"},{"location":"manifolds/vector_bundle.html","page":"Vector bundle","title":"Vector bundle","text":"Vector bundle E is a manifold that is built on top of another manifold mathcal M (base space). It is characterized by a continuous function Π E mathcal M, such that for each point p mathcal M the preimage of p by Π, Π^-1(p), has a structure of a vector space. These vector spaces are called fibers. Bundle projection can be performed using function bundle_projection.","category":"page"},{"location":"manifolds/vector_bundle.html","page":"Vector bundle","title":"Vector bundle","text":"Tangent bundle is a simple example of a vector bundle, where each fiber is the tangent space at the specified point x. An object representing a tangent bundle can be obtained using the constructor called TangentBundle.","category":"page"},{"location":"manifolds/vector_bundle.html","page":"Vector bundle","title":"Vector bundle","text":"Fibers of a vector bundle are represented by the type VectorBundleFibers. The important difference between functions operating on VectorBundle and VectorBundleFibers is that in the first case both a point on the underlying manifold and the vector are represented together (by a single argument) while in the second case only the vector part is present, while the point is supplied in a different argument where needed.","category":"page"},{"location":"manifolds/vector_bundle.html","page":"Vector bundle","title":"Vector bundle","text":"VectorBundleFibers refers to the whole set of fibers of a vector bundle. There is also another type, VectorSpaceAtPoint, that represents a specific fiber at a given point. This distinction is made to reduce the need to repeatedly construct objects of type VectorSpaceAtPoint in certain usage scenarios. This is also considered a manifold.","category":"page"},{"location":"manifolds/vector_bundle.html#FVector","page":"Vector bundle","title":"FVector","text":"","category":"section"},{"location":"manifolds/vector_bundle.html","page":"Vector bundle","title":"Vector bundle","text":"For cases where confusion between different types of vectors is possible, the type FVector can be used to express which type of vector space the vector belongs to. It is used for example in musical isomorphisms (the flat and sharp functions) that are used to go from a tangent space to cotangent space and vice versa.","category":"page"},{"location":"manifolds/vector_bundle.html#Documentation","page":"Vector bundle","title":"Documentation","text":"","category":"section"},{"location":"manifolds/vector_bundle.html","page":"Vector bundle","title":"Vector bundle","text":"Modules = [Manifolds, ManifoldsBase]\nPages = [\"manifolds/VectorBundle.jl\"]\nOrder = [:constant, :type, :function]","category":"page"},{"location":"manifolds/vector_bundle.html#ManifoldsBase.TangentSpace-Tuple{AbstractManifold, Any}","page":"Vector bundle","title":"ManifoldsBase.TangentSpace","text":"TangentSpace(M::AbstractManifold, p)\n\nReturn a TangentSpaceAtPoint representing tangent space at p on the AbstractManifold M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#Manifolds.CotangentSpaceAtPoint-Tuple{AbstractManifold, Any}","page":"Vector bundle","title":"Manifolds.CotangentSpaceAtPoint","text":"CotangentSpaceAtPoint(M::AbstractManifold, p)\n\nReturn an object of type VectorSpaceAtPoint representing cotangent space at p.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#Manifolds.SasakiRetraction","page":"Vector bundle","title":"Manifolds.SasakiRetraction","text":"struct SasakiRetraction <: AbstractRetractionMethod end\n\nExponential map on TangentBundle computed via Euler integration as described in [MF12]. The system of equations for gamma ℝ to Tmathcal M such that gamma(1) = exp_pX(X_M X_F) and gamma(0)=(p X) reads\n\ndotgamma(t) = (dotp(t) dotX(t)) = (R(X(t) dotX(t))dotp(t) 0)\n\nwhere R is the Riemann curvature tensor (see riemann_tensor).\n\nConstructor\n\nSasakiRetraction(L::Int)\n\nIn this constructor L is the number of integration steps.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/vector_bundle.html#Manifolds.TangentBundle","page":"Vector bundle","title":"Manifolds.TangentBundle","text":"TangentBundle{𝔽,M} = VectorBundle{𝔽,TangentSpaceType,M} where {𝔽,M<:AbstractManifold{𝔽}}\n\nTangent bundle for manifold of type M, as a manifold with the Sasaki metric [Sas58].\n\nExact retraction and inverse retraction can be approximated using VectorBundleProductRetraction, VectorBundleInverseProductRetraction and SasakiRetraction. VectorBundleProductVectorTransport can be used as a vector transport.\n\nConstructors\n\nTangentBundle(M::AbstractManifold)\nTangentBundle(M::AbstractManifold, vtm::VectorBundleProductVectorTransport)\n\n\n\n\n\n","category":"type"},{"location":"manifolds/vector_bundle.html#Manifolds.TangentSpaceAtPoint","page":"Vector bundle","title":"Manifolds.TangentSpaceAtPoint","text":"TangentSpaceAtPoint{M}\n\nAlias for VectorSpaceAtPoint for the tangent space at a point.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/vector_bundle.html#Manifolds.TangentSpaceAtPoint-Tuple{AbstractManifold, Any}","page":"Vector bundle","title":"Manifolds.TangentSpaceAtPoint","text":"TangentSpaceAtPoint(M::AbstractManifold, p)\n\nReturn an object of type VectorSpaceAtPoint representing tangent space at p on the AbstractManifold M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#Manifolds.TensorProductType","page":"Vector bundle","title":"Manifolds.TensorProductType","text":"TensorProductType(spaces::VectorSpaceType...)\n\nVector space type corresponding to the tensor product of given vector space types.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/vector_bundle.html#Manifolds.VectorBundle","page":"Vector bundle","title":"Manifolds.VectorBundle","text":"VectorBundle{𝔽,TVS<:VectorSpaceType,TM<:AbstractManifold{𝔽}} <: AbstractManifold{𝔽}\n\nVector bundle on a AbstractManifold M of type VectorSpaceType.\n\nConstructor\n\nVectorBundle(M::AbstractManifold, type::VectorSpaceType)\n\n\n\n\n\n","category":"type"},{"location":"manifolds/vector_bundle.html#Manifolds.VectorBundleFibers","page":"Vector bundle","title":"Manifolds.VectorBundleFibers","text":"VectorBundleFibers(fiber::VectorSpaceType, M::AbstractManifold)\n\nType representing a family of vector spaces (fibers) of a vector bundle over M with vector spaces of type fiber. In contrast with VectorBundle, operations on VectorBundleFibers expect point-like and vector-like parts to be passed separately instead of being bundled together. It can be thought of as a representation of vector spaces from a vector bundle but without storing the point at which a vector space is attached (which is specified separately in various functions).\n\n\n\n\n\n","category":"type"},{"location":"manifolds/vector_bundle.html#Manifolds.VectorBundleInverseProductRetraction","page":"Vector bundle","title":"Manifolds.VectorBundleInverseProductRetraction","text":"struct VectorBundleInverseProductRetraction <: AbstractInverseRetractionMethod end\n\nInverse retraction of the point y at point p from vector bundle B over manifold B.fiber (denoted mathcal M). The inverse retraction is derived as a product manifold-style approximation to the logarithmic map in the Sasaki metric. The considered product manifold is the product between the manifold mathcal M and the topological vector space isometric to the fiber.\n\nNotation:\n\nThe point p = (x_p V_p) where x_p mathcal M and V_p belongs to the fiber F=π^-1(x_p) of the vector bundle B where π is the canonical projection of that vector bundle B. Similarly, q = (x_q V_q).\n\nThe inverse retraction is calculated as\n\noperatornameretr^-1_p q = (operatornameretr^-1_x_p(x_q) V_operatornameretr^-1 - V_p)\n\nwhere V_operatornameretr^-1 is the result of vector transport of V_q to the point x_p. The difference V_operatornameretr^-1 - V_p corresponds to the logarithmic map in the vector space F.\n\nSee also VectorBundleProductRetraction.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/vector_bundle.html#Manifolds.VectorBundleProductRetraction","page":"Vector bundle","title":"Manifolds.VectorBundleProductRetraction","text":"struct VectorBundleProductRetraction <: AbstractRetractionMethod end\n\nProduct retraction map of tangent vector X at point p from vector bundle B over manifold B.fiber (denoted mathcal M). The retraction is derived as a product manifold-style approximation to the exponential map in the Sasaki metric. The considered product manifold is the product between the manifold mathcal M and the topological vector space isometric to the fiber.\n\nNotation:\n\nThe point p = (x_p V_p) where x_p mathcal M and V_p belongs to the fiber F=π^-1(x_p) of the vector bundle B where π is the canonical projection of that vector bundle B.\nThe tangent vector X = (V_XM V_XF) T_pB where V_XM is a tangent vector from the tangent space T_x_pmathcal M and V_XF is a tangent vector from the tangent space T_V_pF (isomorphic to F).\n\nThe retraction is calculated as\n\noperatornameretr_p(X) = (exp_x_p(V_XM) V_exp)\n\nwhere V_exp is the result of vector transport of V_p + V_XF to the point exp_x_p(V_XM). The sum V_p + V_XF corresponds to the exponential map in the vector space F.\n\nSee also VectorBundleInverseProductRetraction.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/vector_bundle.html#Manifolds.VectorBundleProductVectorTransport","page":"Vector bundle","title":"Manifolds.VectorBundleProductVectorTransport","text":"VectorBundleProductVectorTransport{\n TMP<:AbstractVectorTransportMethod,\n TMV<:AbstractVectorTransportMethod,\n} <: AbstractVectorTransportMethod\n\nVector transport type on VectorBundle. method_point is used for vector transport of the point part and method_vector is used for transport of the vector part.\n\nThe vector transport is derived as a product manifold-style vector transport. The considered product manifold is the product between the manifold mathcal M and the topological vector space isometric to the fiber.\n\nConstructor\n\nVectorBundleProductVectorTransport(\n method_point::AbstractVectorTransportMethod,\n method_vector::AbstractVectorTransportMethod,\n)\nVectorBundleProductVectorTransport()\n\nBy default both methods are set to ParallelTransport.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/vector_bundle.html#Manifolds.VectorBundleVectorTransport","page":"Vector bundle","title":"Manifolds.VectorBundleVectorTransport","text":"const VectorBundleVectorTransport = VectorBundleProductVectorTransport\n\nDeprecated: an alias for VectorBundleProductVectorTransport.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/vector_bundle.html#Manifolds.VectorSpaceAtPoint","page":"Vector bundle","title":"Manifolds.VectorSpaceAtPoint","text":"VectorSpaceAtPoint{\n 𝔽,\n TFiber<:VectorBundleFibers{<:VectorSpaceType,<:AbstractManifold{𝔽}},\n TX,\n} <: AbstractManifold{𝔽}\n\nA vector space at a point p on the manifold. This is modelled using VectorBundleFibers with only a vector-like part and fixing the point-like part to be just p.\n\nThis vector space itself is also a manifold. Especially, it's flat and hence isometric to the Euclidean manifold.\n\nConstructor\n\nVectorSpaceAtPoint(fiber::VectorBundleFibers, p)\n\nA vector space (fiber type fiber of a vector bundle) at point p from the manifold fiber.manifold.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/vector_bundle.html#Base.exp-Tuple{TangentSpaceAtPoint{𝔽} where 𝔽, Any, Any}","page":"Vector bundle","title":"Base.exp","text":"exp(M::TangentSpaceAtPoint, p, X)\n\nExponential map of tangent vectors X and p from the tangent space M. It is calculated as their sum.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#Base.getindex-Tuple{ArrayPartition, VectorBundle, Symbol}","page":"Vector bundle","title":"Base.getindex","text":"getindex(p::ArrayPartition, M::VectorBundle, s::Symbol)\np[M::VectorBundle, s]\n\nAccess the element(s) at index s of a point p on a VectorBundle M by using the symbols :point and :vector for the base and vector component, respectively.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#Base.getindex-Tuple{ProductRepr, VectorBundle, Symbol}","page":"Vector bundle","title":"Base.getindex","text":"getindex(p::ProductRepr, M::VectorBundle, s::Symbol)\np[M::VectorBundle, s]\n\nAccess the element(s) at index s of a point p on a VectorBundle M by using the symbols :point and :vector for the base and vector component, respectively.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#Base.log-Tuple{TangentSpaceAtPoint{𝔽} where 𝔽, Vararg{Any}}","page":"Vector bundle","title":"Base.log","text":"log(M::TangentSpaceAtPoint, p, q)\n\nLogarithmic map on the tangent space manifold M, calculated as the difference of tangent vectors q and p from M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#Base.setindex!-Tuple{ArrayPartition, Any, VectorBundle, Symbol}","page":"Vector bundle","title":"Base.setindex!","text":"setindex!(p::ArrayPartition, val, M::VectorBundle, s::Symbol)\np[M::VectorBundle, s] = val\n\nSet the element(s) at index s of a point p on a VectorBundle M to val by using the symbols :point and :vector for the base and vector component, respectively.\n\nnote: Note\nThe content of element of p is replaced, not the element itself.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#Base.setindex!-Tuple{ProductRepr, Any, VectorBundle, Symbol}","page":"Vector bundle","title":"Base.setindex!","text":"setindex!(p::ProductRepr, val, M::VectorBundle, s::Symbol)\np[M::VectorBundle, s] = val\n\nSet the element(s) at index s of a point p on a VectorBundle M to val by using the symbols :point and :vector for the base and vector component, respectively.\n\nnote: Note\nThe content of element of p is replaced, not the element itself.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#LinearAlgebra.norm-Tuple{VectorBundleFibers, Any, Any}","page":"Vector bundle","title":"LinearAlgebra.norm","text":"norm(B::VectorBundleFibers, p, q)\n\nNorm of the vector X from the vector space of type B.fiber at point p from manifold B.manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#Manifolds.bundle_projection-Tuple{VectorBundle, Any}","page":"Vector bundle","title":"Manifolds.bundle_projection","text":"bundle_projection(B::VectorBundle, p::ArrayPartition)\n\nProjection of point p from the bundle M to the base manifold. Returns the point on the base manifold B.manifold at which the vector part of p is attached.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#Manifolds.inverse_retract_product-Tuple{VectorBundle, Any, Any}","page":"Vector bundle","title":"Manifolds.inverse_retract_product","text":"inverse_retract_product(M::VectorBundle, p, q)\n\nCompute the allocating variant of the VectorBundleInverseProductRetraction, which by default allocates and calls inverse_retract_product!.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#Manifolds.retract_product-Tuple{VectorBundle, Any, Any, Number}","page":"Vector bundle","title":"Manifolds.retract_product","text":"retract_product(M::VectorBundle, p, q, t::Number)\n\nCompute the allocating variant of the VectorBundleProductRetraction, which by default allocates and calls retract_product!.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#Manifolds.retract_sasaki-Tuple{AbstractManifold, Any, Any, Number, SasakiRetraction}","page":"Vector bundle","title":"Manifolds.retract_sasaki","text":"retract_sasaki(M::AbstractManifold, p, X, t::Number, m::SasakiRetraction)\n\nCompute the allocating variant of the SasakiRetraction, which by default allocates and calls retract_sasaki!.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#Manifolds.vector_bundle_transport-Tuple{VectorSpaceType, AbstractManifold}","page":"Vector bundle","title":"Manifolds.vector_bundle_transport","text":"vector_bundle_transport(fiber::VectorSpaceType, M::AbstractManifold)\n\nDetermine the vector tranport used for exp and log maps on a vector bundle with vector space type fiber and manifold M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#ManifoldsBase.Weingarten-Tuple{VectorSpaceAtPoint, Any, Any, Any}","page":"Vector bundle","title":"ManifoldsBase.Weingarten","text":"Y = Weingarten(M::VectorSpaceAtPoint, p, X, V)\nWeingarten!(M::VectorSpaceAtPoint, Y, p, X, V)\n\nCompute the Weingarten map mathcal W_p at p on the VectorSpaceAtPoint M with respect to the tangent vector X in T_pmathcal M and the normal vector V in N_pmathcal M.\n\nSince this a flat space by itself, the result is always the zero tangent vector.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#ManifoldsBase.allocate_result-Union{Tuple{TF}, Tuple{VectorBundleFibers, TF, Vararg{Any}}} where TF","page":"Vector bundle","title":"ManifoldsBase.allocate_result","text":"allocate_result(B::VectorBundleFibers, f, x...)\n\nAllocates an array for the result of function f that is an element of the vector space of type B.fiber on manifold B.manifold and arguments x... for implementing the non-modifying operation using the modifying operation.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#ManifoldsBase.allocate_result_type-Union{Tuple{N}, Tuple{TF}, Tuple{VectorBundleFibers, TF, Tuple{Vararg{Any, N}}}} where {TF, N}","page":"Vector bundle","title":"ManifoldsBase.allocate_result_type","text":"allocate_result_type(B::VectorBundleFibers, f, args::NTuple{N,Any}) where N\n\nReturn type of element of the array that will represent the result of function f for representing an operation with result in the vector space fiber for manifold M on given arguments (passed at a tuple).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#ManifoldsBase.distance-Tuple{TangentSpaceAtPoint{𝔽} where 𝔽, Any, Any}","page":"Vector bundle","title":"ManifoldsBase.distance","text":"distance(M::TangentSpaceAtPoint, p, q)\n\nDistance between vectors p and q from the vector space M. It is calculated as the norm of their difference.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#ManifoldsBase.distance-Tuple{VectorBundleFibers, Any, Any, Any}","page":"Vector bundle","title":"ManifoldsBase.distance","text":"distance(B::VectorBundleFibers, p, X, Y)\n\nDistance between vectors X and Y from the vector space at point p from the manifold B.manifold, that is the base manifold of M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#ManifoldsBase.injectivity_radius-Tuple{TangentBundle{𝔽} where 𝔽}","page":"Vector bundle","title":"ManifoldsBase.injectivity_radius","text":"injectivity_radius(M::TangentBundle)\n\nInjectivity radius of TangentBundle manifold is infinite if the base manifold is flat and 0 otherwise. See https://mathoverflow.net/questions/94322/injectivity-radius-of-the-sasaki-metric.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#ManifoldsBase.injectivity_radius-Tuple{TangentSpaceAtPoint{𝔽} where 𝔽}","page":"Vector bundle","title":"ManifoldsBase.injectivity_radius","text":"injectivity_radius(M::TangentSpaceAtPoint)\n\nReturn the injectivity radius on the TangentSpaceAtPoint M, which is .\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#ManifoldsBase.inner-Tuple{TangentSpaceAtPoint{𝔽} where 𝔽, Any, Any, Any}","page":"Vector bundle","title":"ManifoldsBase.inner","text":"inner(M::TangentSpaceAtPoint, p, X, Y)\n\nInner product of vectors X and Y from the tangent space at M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#ManifoldsBase.inner-Tuple{VectorBundle, Any, Any, Any}","page":"Vector bundle","title":"ManifoldsBase.inner","text":"inner(B::VectorBundle, p, X, Y)\n\nInner product of tangent vectors X and Y at point p from the vector bundle B over manifold B.fiber (denoted mathcal M).\n\nNotation:\n\nThe point p = (x_p V_p) where x_p mathcal M and V_p belongs to the fiber F=π^-1(x_p) of the vector bundle B where π is the canonical projection of that vector bundle B.\nThe tangent vector v = (V_XM V_XF) T_xB where V_XM is a tangent vector from the tangent space T_x_pmathcal M and V_XF is a tangent vector from the tangent space T_V_pF (isomorphic to F). Similarly for the other tangent vector w = (V_YM V_YF) T_xB.\n\nThe inner product is calculated as\n\nX Y_p = V_XM V_YM_x_p + V_XF V_YF_V_p\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#ManifoldsBase.inner-Tuple{VectorBundleFibers, Any, Any, Any}","page":"Vector bundle","title":"ManifoldsBase.inner","text":"inner(B::VectorBundleFibers, p, X, Y)\n\nInner product of vectors X and Y from the vector space of type B.fiber at point p from manifold B.manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#ManifoldsBase.is_flat-Tuple{TangentSpaceAtPoint{𝔽} where 𝔽}","page":"Vector bundle","title":"ManifoldsBase.is_flat","text":"is_flat(::TangentSpaceAtPoint)\n\nReturn true. TangentSpaceAtPoint is a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#ManifoldsBase.is_flat-Tuple{VectorBundle}","page":"Vector bundle","title":"ManifoldsBase.is_flat","text":"is_flat(::VectorBundle)\n\nReturn true if the underlying manifold of VectorBundle M is flat.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#ManifoldsBase.project-Tuple{TangentSpaceAtPoint{𝔽} where 𝔽, Any, Any}","page":"Vector bundle","title":"ManifoldsBase.project","text":"project(M::TangentSpaceAtPoint, p, X)\n\nProject the vector X from the tangent space M, that is project the vector X tangent at M.point.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#ManifoldsBase.project-Tuple{TangentSpaceAtPoint{𝔽} where 𝔽, Any}","page":"Vector bundle","title":"ManifoldsBase.project","text":"project(M::TangentSpaceAtPoint, p)\n\nProject the point p from the tangent space M, that is project the vector p tangent at M.point.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#ManifoldsBase.project-Tuple{VectorBundle, Any, Any}","page":"Vector bundle","title":"ManifoldsBase.project","text":"project(B::VectorBundle, p, X)\n\nProject the element X of the ambient space of the tangent space T_p B to the tangent space T_p B.\n\nNotation:\n\nThe point p = (x_p V_p) where x_p mathcal M and V_p belongs to the fiber F=π^-1(x_p) of the vector bundle B where π is the canonical projection of that vector bundle B.\nThe vector x = (V_XM V_XF) where x_p belongs to the ambient space of T_x_pmathcal M and V_XF belongs to the ambient space of the fiber F=π^-1(x_p) of the vector bundle B where π is the canonical projection of that vector bundle B.\n\nThe projection is calculated by projecting V_XM to tangent space T_x_pmathcal M and then projecting the vector V_XF to the fiber F.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#ManifoldsBase.project-Tuple{VectorBundle, Any}","page":"Vector bundle","title":"ManifoldsBase.project","text":"project(B::VectorBundle, p)\n\nProject the point p from the ambient space of the vector bundle B over manifold B.fiber (denoted mathcal M) to the vector bundle.\n\nNotation:\n\nThe point p = (x_p V_p) where x_p belongs to the ambient space of mathcal M and V_p belongs to the ambient space of the fiber F=π^-1(x_p) of the vector bundle B where π is the canonical projection of that vector bundle B.\n\nThe projection is calculated by projecting the point x_p to the manifold mathcal M and then projecting the vector V_p to the tangent space T_x_pmathcal M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#ManifoldsBase.project-Tuple{VectorBundleFibers, Any, Any}","page":"Vector bundle","title":"ManifoldsBase.project","text":"project(B::VectorBundleFibers, p, X)\n\nProject vector X from the vector space of type B.fiber at point p.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#ManifoldsBase.vector_transport_to-Tuple{VectorBundle, Any, Any, Any, Manifolds.VectorBundleProductVectorTransport}","page":"Vector bundle","title":"ManifoldsBase.vector_transport_to","text":"vector_transport_to(M::VectorBundle, p, X, q, m::VectorBundleProductVectorTransport)\n\nCompute the vector transport the tangent vector Xat p to q on the VectorBundle M using the VectorBundleProductVectorTransport m.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#ManifoldsBase.zero_vector!-Tuple{VectorBundleFibers, Any, Any}","page":"Vector bundle","title":"ManifoldsBase.zero_vector!","text":"zero_vector!(B::VectorBundleFibers, X, p)\n\nSave the zero vector from the vector space of type B.fiber at point p from manifold B.manifold to X.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#ManifoldsBase.zero_vector-Tuple{TangentSpaceAtPoint{𝔽} where 𝔽, Vararg{Any}}","page":"Vector bundle","title":"ManifoldsBase.zero_vector","text":"zero_vector(M::TangentSpaceAtPoint, p)\n\nZero tangent vector at point p from the tangent space M, that is the zero tangent vector at point M.point.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#ManifoldsBase.zero_vector-Tuple{VectorBundle, Vararg{Any}}","page":"Vector bundle","title":"ManifoldsBase.zero_vector","text":"zero_vector(B::VectorBundle, p)\n\nZero tangent vector at point p from the vector bundle B over manifold B.fiber (denoted mathcal M). The zero vector belongs to the space T_pB\n\nNotation:\n\nThe point p = (x_p V_p) where x_p mathcal M and V_p belongs to the fiber F=π^-1(x_p) of the vector bundle B where π is the canonical projection of that vector bundle B.\n\nThe zero vector is calculated as\n\nmathbf0_p = (mathbf0_x_p mathbf0_F)\n\nwhere mathbf0_x_p is the zero tangent vector from T_x_pmathcal M and mathbf0_F is the zero element of the vector space F.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#ManifoldsBase.zero_vector-Tuple{VectorBundleFibers, Any}","page":"Vector bundle","title":"ManifoldsBase.zero_vector","text":"zero_vector(B::VectorBundleFibers, p)\n\nCompute the zero vector from the vector space of type B.fiber at point p from manifold B.manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/vector_bundle.html#Example","page":"Vector bundle","title":"Example","text":"","category":"section"},{"location":"manifolds/vector_bundle.html","page":"Vector bundle","title":"Vector bundle","text":"The following code defines a point on the tangent bundle of the sphere S^2 and a tangent vector to that point.","category":"page"},{"location":"manifolds/vector_bundle.html","page":"Vector bundle","title":"Vector bundle","text":"using Manifolds\nM = Sphere(2)\nTB = TangentBundle(M)\np = ProductRepr([1.0, 0.0, 0.0], [0.0, 1.0, 3.0])\nX = ProductRepr([0.0, 1.0, 0.0], [0.0, 0.0, -2.0])","category":"page"},{"location":"manifolds/vector_bundle.html","page":"Vector bundle","title":"Vector bundle","text":"An approximation of the exponential in the Sasaki metric using 1000 steps can be calculated as follows.","category":"page"},{"location":"manifolds/vector_bundle.html","page":"Vector bundle","title":"Vector bundle","text":"q = retract(TB, p, X, SasakiRetraction(1000))\nprintln(\"Approximation of the exponential map: \", q)","category":"page"},{"location":"manifolds/spheresymmetricmatrices.html#Unit-norm-symmetric-matrices","page":"Unit-norm symmetric matrices","title":"Unit-norm symmetric matrices","text":"","category":"section"},{"location":"manifolds/spheresymmetricmatrices.html","page":"Unit-norm symmetric matrices","title":"Unit-norm symmetric matrices","text":"Modules = [Manifolds]\nPages = [\"manifolds/SphereSymmetricMatrices.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/spheresymmetricmatrices.html#Manifolds.SphereSymmetricMatrices","page":"Unit-norm symmetric matrices","title":"Manifolds.SphereSymmetricMatrices","text":"SphereSymmetricMatrices{n,𝔽} <: AbstractEmbeddedManifold{ℝ,TransparentIsometricEmbedding}\n\nThe AbstractManifold consisting of the n n symmetric matrices of unit Frobenius norm, i.e.\n\nmathcalS_textsym =biglp 𝔽^n n big p^mathrmH = p lVert p rVert = 1 bigr\n\nwhere cdot^mathrmH denotes the Hermitian, i.e. complex conjugate transpose, and the field 𝔽 ℝ ℂ.\n\nConstructor\n\nSphereSymmetricMatrices(n[, field=ℝ])\n\nGenerate the manifold of n-by-n symmetric matrices of unit Frobenius norm.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/spheresymmetricmatrices.html#ManifoldsBase.check_point-Union{Tuple{𝔽}, Tuple{n}, Tuple{SphereSymmetricMatrices{n, 𝔽}, Any}} where {n, 𝔽}","page":"Unit-norm symmetric matrices","title":"ManifoldsBase.check_point","text":"check_point(M::SphereSymmetricMatrices{n,𝔽}, p; kwargs...)\n\nCheck whether the matrix is a valid point on the SphereSymmetricMatrices M, i.e. is an n-by-n symmetric matrix of unit Frobenius norm.\n\nThe tolerance for the symmetry of p can be set using kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/spheresymmetricmatrices.html#ManifoldsBase.check_vector-Union{Tuple{𝔽}, Tuple{n}, Tuple{SphereSymmetricMatrices{n, 𝔽}, Any, Any}} where {n, 𝔽}","page":"Unit-norm symmetric matrices","title":"ManifoldsBase.check_vector","text":"check_vector(M::SphereSymmetricMatrices{n,𝔽}, p, X; kwargs... )\n\nCheck whether X is a tangent vector to manifold point p on the SphereSymmetricMatrices M, i.e. X has to be a symmetric matrix of size (n,n) of unit Frobenius norm.\n\nThe tolerance for the symmetry of p and X can be set using kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/spheresymmetricmatrices.html#ManifoldsBase.is_flat-Tuple{SphereSymmetricMatrices}","page":"Unit-norm symmetric matrices","title":"ManifoldsBase.is_flat","text":"is_flat(::SphereSymmetricMatrices)\n\nReturn false. SphereSymmetricMatrices is not a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/spheresymmetricmatrices.html#ManifoldsBase.manifold_dimension-Union{Tuple{SphereSymmetricMatrices{n, 𝔽}}, Tuple{𝔽}, Tuple{n}} where {n, 𝔽}","page":"Unit-norm symmetric matrices","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::SphereSymmetricMatrices{n,𝔽})\n\nReturn the manifold dimension of the SphereSymmetricMatrices n-by-n symmetric matrix M of unit Frobenius norm over the number system 𝔽, i.e.\n\nbeginaligned\ndim(mathcalS_textsym)(nℝ) = fracn(n+1)2 - 1\ndim(mathcalS_textsym)(nℂ) = 2fracn(n+1)2 - n -1\nendaligned\n\n\n\n\n\n","category":"method"},{"location":"manifolds/spheresymmetricmatrices.html#ManifoldsBase.project-Tuple{SphereSymmetricMatrices, Any, Any}","page":"Unit-norm symmetric matrices","title":"ManifoldsBase.project","text":"project(M::SphereSymmetricMatrices, p, X)\n\nProject the matrix X onto the tangent space at p on the SphereSymmetricMatrices M, i.e.\n\noperatornameproj_p(X) = fracX + X^mathrmH2 - p fracX + X^mathrmH2p\n\nwhere cdot^mathrmH denotes the Hermitian, i.e. complex conjugate transposed.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/spheresymmetricmatrices.html#ManifoldsBase.project-Tuple{SphereSymmetricMatrices, Any}","page":"Unit-norm symmetric matrices","title":"ManifoldsBase.project","text":"project(M::SphereSymmetricMatrices, p)\n\nProjects p from the embedding onto the SphereSymmetricMatrices M, i.e.\n\noperatornameproj_mathcalS_textsym(p) = frac12 bigl( p + p^mathrmH bigr)\n\nwhere cdot^mathrmH denotes the Hermitian, i.e. complex conjugate transposed.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/positivenumbers.html#Positive-Numbers","page":"Positive numbers","title":"Positive Numbers","text":"","category":"section"},{"location":"manifolds/positivenumbers.html","page":"Positive numbers","title":"Positive numbers","text":"The manifold PositiveNumbers represents positive numbers with hyperbolic geometry. Additionally, there are also short forms for its corresponding PowerManifolds, i.e. PositiveVectors, PositiveMatrices, and PositiveArrays.","category":"page"},{"location":"manifolds/positivenumbers.html","page":"Positive numbers","title":"Positive numbers","text":"Modules = [Manifolds]\nPages = [\"manifolds/PositiveNumbers.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/positivenumbers.html#Manifolds.PositiveNumbers","page":"Positive numbers","title":"Manifolds.PositiveNumbers","text":"PositiveNumbers <: AbstractManifold{ℝ}\n\nThe hyperbolic manifold of positive numbers H^1 is a the hyperbolic manifold represented by just positive numbers.\n\nConstructor\n\nPositiveNumbers()\n\nGenerate the ℝ-valued hyperbolic model represented by positive positive numbers. To use this with arrays (1-element arrays), please use SymmetricPositiveDefinite(1).\n\n\n\n\n\n","category":"type"},{"location":"manifolds/positivenumbers.html#Base.exp-Tuple{PositiveNumbers, Any, Any}","page":"Positive numbers","title":"Base.exp","text":"exp(M::PositiveNumbers, p, X)\n\nCompute the exponential map on the PositiveNumbers M.\n\nexp_p X = poperatornameexp(Xp)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/positivenumbers.html#Base.log-Tuple{PositiveNumbers, Any, Any}","page":"Positive numbers","title":"Base.log","text":"log(M::PositiveNumbers, p, q)\n\nCompute the logarithmic map on the PositiveNumbers M.\n\nlog_p q = plogfracqp\n\n\n\n\n\n","category":"method"},{"location":"manifolds/positivenumbers.html#ManifoldDiff.riemannian_Hessian-Tuple{PositiveNumbers, Vararg{Any, 4}}","page":"Positive numbers","title":"ManifoldDiff.riemannian_Hessian","text":"riemannian_Hessian(M::SymmetricPositiveDefinite, p, G, H, X)\n\nThe Riemannian Hessian can be computed as stated in Eq. (7.3) [Ngu23]. Let nabla f(p) denote the Euclidean gradient G, nabla^2 f(p)X the Euclidean Hessian H. Then the formula reads\n\n operatornameHessf(p)X = pbigl(^2 f(p)Xbigr)p + Xbigl(f(p)bigr)p\n\n\n\n\n\n","category":"method"},{"location":"manifolds/positivenumbers.html#Manifolds.PositiveArrays-Union{Tuple{Vararg{Int64, I}}, Tuple{I}} where I","page":"Positive numbers","title":"Manifolds.PositiveArrays","text":"PositiveArrays(n₁,n₂,...,nᵢ)\n\nGenerate the manifold of i-dimensional arrays with positive entries. This manifold is modeled as a PowerManifold of PositiveNumbers.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/positivenumbers.html#Manifolds.PositiveMatrices-Tuple{Integer, Integer}","page":"Positive numbers","title":"Manifolds.PositiveMatrices","text":"PositiveMatrices(m,n)\n\nGenerate the manifold of matrices with positive entries. This manifold is modeled as a PowerManifold of PositiveNumbers.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/positivenumbers.html#Manifolds.PositiveVectors-Tuple{Integer}","page":"Positive numbers","title":"Manifolds.PositiveVectors","text":"PositiveVectors(n)\n\nGenerate the manifold of vectors with positive entries. This manifold is modeled as a PowerManifold of PositiveNumbers.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/positivenumbers.html#Manifolds.manifold_volume-Tuple{PositiveNumbers}","page":"Positive numbers","title":"Manifolds.manifold_volume","text":"manifold_volume(M::PositiveNumbers)\n\nReturn volume of PositiveNumbers M, i.e. Inf.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/positivenumbers.html#Manifolds.volume_density-Tuple{PositiveNumbers, Any, Any}","page":"Positive numbers","title":"Manifolds.volume_density","text":"volume_density(M::PositiveNumbers, p, X)\n\nCompute volume density function of PositiveNumbers. The formula reads\n\ntheta_p(X) = exp(X p)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/positivenumbers.html#ManifoldsBase.change_metric-Tuple{PositiveNumbers, EuclideanMetric, Any, Any}","page":"Positive numbers","title":"ManifoldsBase.change_metric","text":"change_metric(M::PositiveNumbers, E::EuclideanMetric, p, X)\n\nGiven a tangent vector X T_pmathcal M representing a linear function with respect to the EuclideanMetric g_E, this function changes the representer into the one with respect to the positivity metric of PositiveNumbers M.\n\nFor all ZY we are looking for the function c on the tangent space at p such that\n\n ZY = XY = fracc(Z)c(Y)p^2 = g_p(c(Y)c(Z))\n\nand hence C(X) = pX.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/positivenumbers.html#ManifoldsBase.change_representer-Tuple{PositiveNumbers, EuclideanMetric, Any, Any}","page":"Positive numbers","title":"ManifoldsBase.change_representer","text":"change_representer(M::PositiveNumbers, E::EuclideanMetric, p, X)\n\nGiven a tangent vector X T_pmathcal M representing a linear function with respect to the EuclideanMetric g_E, this function changes the representer into the one with respect to the positivity metric representation of PositiveNumbers M.\n\nFor all tangent vectors Y the result Z has to fulfill\n\n XY = XY = fracZYp^2 = g_p(YZ)\n\nand hence Z = p^2X\n\n\n\n\n\n","category":"method"},{"location":"manifolds/positivenumbers.html#ManifoldsBase.check_point-Tuple{PositiveNumbers, Any}","page":"Positive numbers","title":"ManifoldsBase.check_point","text":"check_point(M::PositiveNumbers, p)\n\nCheck whether p is a point on the PositiveNumbers M, i.e. p0.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/positivenumbers.html#ManifoldsBase.check_vector-Tuple{PositiveNumbers, Any, Any}","page":"Positive numbers","title":"ManifoldsBase.check_vector","text":"check_vector(M::PositiveNumbers, p, X; kwargs...)\n\nCheck whether X is a tangent vector in the tangent space of p on the PositiveNumbers M. For the real-valued case represented by positive numbers, all X are valid, since the tangent space is the whole real line. For the complex-valued case X [...]\n\n\n\n\n\n","category":"method"},{"location":"manifolds/positivenumbers.html#ManifoldsBase.distance-Tuple{PositiveNumbers, Any, Any}","page":"Positive numbers","title":"ManifoldsBase.distance","text":"distance(M::PositiveNumbers, p, q)\n\nCompute the distance on the PositiveNumbers M, which is\n\nd(pq) = Bigllvert log fracpq Bigrrvert = lvert log p - log qrvert\n\n\n\n\n\n","category":"method"},{"location":"manifolds/positivenumbers.html#ManifoldsBase.get_coordinates-Tuple{PositiveNumbers, Any, Any, DefaultOrthonormalBasis{ℝ}}","page":"Positive numbers","title":"ManifoldsBase.get_coordinates","text":"get_coordinates(::PositiveNumbers, p, X, ::DefaultOrthonormalBasis{ℝ})\n\nCompute the coordinate of vector X which is tangent to p on the PositiveNumbers manifold. The formula is X p.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/positivenumbers.html#ManifoldsBase.get_vector-Tuple{PositiveNumbers, Any, Any, DefaultOrthonormalBasis{ℝ}}","page":"Positive numbers","title":"ManifoldsBase.get_vector","text":"get_vector(::PositiveNumbers, p, c, ::DefaultOrthonormalBasis{ℝ})\n\nCompute the vector with coordinate c which is tangent to p on the PositiveNumbers manifold. The formula is p * c.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/positivenumbers.html#ManifoldsBase.injectivity_radius-Tuple{PositiveNumbers}","page":"Positive numbers","title":"ManifoldsBase.injectivity_radius","text":"injectivity_radius(M::PositiveNumbers[, p])\n\nReturn the injectivity radius on the PositiveNumbers M, i.e. infty.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/positivenumbers.html#ManifoldsBase.inner-Tuple{PositiveNumbers, Vararg{Any}}","page":"Positive numbers","title":"ManifoldsBase.inner","text":"inner(M::PositiveNumbers, p, X, Y)\n\nCompute the inner product of the two tangent vectors X,Y from the tangent plane at p on the PositiveNumbers M, i.e.\n\ng_p(XY) = fracXYp^2\n\n\n\n\n\n","category":"method"},{"location":"manifolds/positivenumbers.html#ManifoldsBase.is_flat-Tuple{PositiveNumbers}","page":"Positive numbers","title":"ManifoldsBase.is_flat","text":"is_flat(::PositiveNumbers)\n\nReturn false. PositiveNumbers is not a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/positivenumbers.html#ManifoldsBase.manifold_dimension-Tuple{PositiveNumbers}","page":"Positive numbers","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::PositiveNumbers)\n\nReturn the dimension of the PositiveNumbers M, i.e. of the 1-dimensional hyperbolic space,\n\ndim(H^1) = 1\n\n\n\n\n\n","category":"method"},{"location":"manifolds/positivenumbers.html#ManifoldsBase.parallel_transport_to-Tuple{PositiveNumbers, Any, Any, Any}","page":"Positive numbers","title":"ManifoldsBase.parallel_transport_to","text":"parallel_transport_to(M::PositiveNumbers, p, X, q)\n\nCompute the parallel transport of X from the tangent space at p to the tangent space at q on the PositiveNumbers M.\n\nmathcal P_qgets p(X) = Xcdotfracqp\n\n\n\n\n\n","category":"method"},{"location":"manifolds/positivenumbers.html#ManifoldsBase.project-Tuple{PositiveNumbers, Any, Any}","page":"Positive numbers","title":"ManifoldsBase.project","text":"project(M::PositiveNumbers, p, X)\n\nProject a value X onto the tangent space of the point p on the PositiveNumbers M, which is just the identity.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/torus.html#Torus","page":"Torus","title":"Torus","text":"","category":"section"},{"location":"manifolds/torus.html","page":"Torus","title":"Torus","text":"The torus 𝕋^d -ππ)^d is modeled as an AbstractPowerManifold of the (real-valued) Circle and uses ArrayPowerRepresentation. Points on the torus are hence row vectors, x ℝ^d.","category":"page"},{"location":"manifolds/torus.html#Example","page":"Torus","title":"Example","text":"","category":"section"},{"location":"manifolds/torus.html","page":"Torus","title":"Torus","text":"The following code can be used to make a three-dimensional torus 𝕋^3 and compute a tangent vector:","category":"page"},{"location":"manifolds/torus.html","page":"Torus","title":"Torus","text":"using Manifolds\nM = Torus(3)\np = [0.5, 0.0, 0.0]\nq = [0.0, 0.5, 1.0]\nX = log(M, p, q)","category":"page"},{"location":"manifolds/torus.html#Types-and-functions","page":"Torus","title":"Types and functions","text":"","category":"section"},{"location":"manifolds/torus.html","page":"Torus","title":"Torus","text":"Most functions are directly implemented for an AbstractPowerManifold with ArrayPowerRepresentation except the following special cases:","category":"page"},{"location":"manifolds/torus.html","page":"Torus","title":"Torus","text":"Modules = [Manifolds]\nPages = [\"manifolds/Torus.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/torus.html#Manifolds.Torus","page":"Torus","title":"Manifolds.Torus","text":"Torus{N} <: AbstractPowerManifold\n\nThe n-dimensional torus is the n-dimensional product of the Circle.\n\nThe Circle is stored internally within M.manifold, such that all functions of AbstractPowerManifold can be used directly.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/torus.html#ManifoldsBase.check_point-Tuple{Torus, Any}","page":"Torus","title":"ManifoldsBase.check_point","text":"check_point(M::Torus{n},p)\n\nChecks whether p is a valid point on the Torus M, i.e. each of its entries is a valid point on the Circle and the length of x is n.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/torus.html#ManifoldsBase.check_vector-Union{Tuple{N}, Tuple{Torus{N}, Any, Any}} where N","page":"Torus","title":"ManifoldsBase.check_vector","text":"check_vector(M::Torus{n}, p, X; kwargs...)\n\nChecks whether X is a valid tangent vector to p on the Torus M. This means, that p is valid, that X is of correct dimension and elementwise a tangent vector to the elements of p on the Circle.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/torus.html#Embedded-Torus","page":"Torus","title":"Embedded Torus","text":"","category":"section"},{"location":"manifolds/torus.html","page":"Torus","title":"Torus","text":"Two-dimensional torus embedded in ℝ^3.","category":"page"},{"location":"manifolds/torus.html","page":"Torus","title":"Torus","text":"Modules = [Manifolds]\nPages = [\"manifolds/EmbeddedTorus.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/torus.html#Manifolds.DefaultTorusAtlas","page":"Torus","title":"Manifolds.DefaultTorusAtlas","text":"DefaultTorusAtlas()\n\nAtlas for torus with charts indexed by two angles numbers θ₀ φ₀ -π π). Inverse of a chart (θ₀ φ₀) is given by\n\nx(θ φ) = (R + rcos(θ + θ₀))cos(φ + φ₀) \ny(θ φ) = (R + rcos(θ + θ₀))sin(φ + φ₀) \nz(θ φ) = rsin(θ + θ₀)\n\n\n\n\n\n","category":"type"},{"location":"manifolds/torus.html#Manifolds.EmbeddedTorus","page":"Torus","title":"Manifolds.EmbeddedTorus","text":"EmbeddedTorus{TR<:Real} <: AbstractDecoratorManifold{ℝ}\n\nSurface in ℝ³ described by parametric equations:\n\nx(θ φ) = (R + rcos θ)cos φ \ny(θ φ) = (R + rcos θ)sin φ \nz(θ φ) = rsin θ\n\nfor θ, φ in -π π). It is assumed that R r 0.\n\nAlternative names include anchor ring, donut and doughnut.\n\nConstructor\n\nEmbeddedTorus(R, r)\n\n\n\n\n\n","category":"type"},{"location":"manifolds/torus.html#Manifolds.affine_connection-Tuple{Manifolds.EmbeddedTorus, Manifolds.DefaultTorusAtlas, Vararg{Any, 4}}","page":"Torus","title":"Manifolds.affine_connection","text":"affine_connection(M::EmbeddedTorus, A::DefaultTorusAtlas, i, a, Xc, Yc)\n\nAffine connection on EmbeddedTorus M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/torus.html#Manifolds.check_chart_switch-Tuple{Manifolds.EmbeddedTorus, Manifolds.DefaultTorusAtlas, Any, Any}","page":"Torus","title":"Manifolds.check_chart_switch","text":"check_chart_switch(::EmbeddedTorus, A::DefaultTorusAtlas, i, a; ϵ = pi/3)\n\nReturn true if parameters a lie closer than ϵ to chart boundary.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/torus.html#Manifolds.gaussian_curvature-Tuple{Manifolds.EmbeddedTorus, Any}","page":"Torus","title":"Manifolds.gaussian_curvature","text":"gaussian_curvature(M::EmbeddedTorus, p)\n\nGaussian curvature at point p from EmbeddedTorus M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/torus.html#Manifolds.inverse_chart_injectivity_radius-Tuple{Manifolds.EmbeddedTorus, Manifolds.DefaultTorusAtlas, Any}","page":"Torus","title":"Manifolds.inverse_chart_injectivity_radius","text":"inverse_chart_injectivity_radius(M::AbstractManifold, A::AbstractAtlas, i)\n\nInjectivity radius of get_point for chart i from the DefaultTorusAtlas A of the EmbeddedTorus.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/torus.html#Manifolds.normal_vector-Tuple{Manifolds.EmbeddedTorus, Any}","page":"Torus","title":"Manifolds.normal_vector","text":"normal_vector(M::EmbeddedTorus, p)\n\nOutward-pointing normal vector on the EmbeddedTorus at the point p.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/torus.html#ManifoldsBase.check_point-Tuple{Manifolds.EmbeddedTorus, Any}","page":"Torus","title":"ManifoldsBase.check_point","text":"check_point(M::EmbeddedTorus, p; kwargs...)\n\nCheck whether p is a valid point on the EmbeddedTorus M. The tolerance for the last test can be set using the kwargs....\n\nThe method checks if (p_1^2 + p_2^2 + p_3^2 + R^2 - r^2)^2 is apprximately equal to 4R^2(p_1^2 + p_2^2).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/torus.html#ManifoldsBase.check_vector-Tuple{Manifolds.EmbeddedTorus, Any, Any}","page":"Torus","title":"ManifoldsBase.check_vector","text":"check_vector(M::EmbeddedTorus, p, X; atol=eps(eltype(p)), kwargs...)\n\nCheck whether X is a valid vector tangent to p on the EmbeddedTorus M. The method checks if the vector X is orthogonal to the vector normal to the torus, see normal_vector. Absolute tolerance can be set using atol.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/torus.html#ManifoldsBase.inner-Tuple{Manifolds.EmbeddedTorus, Manifolds.DefaultTorusAtlas, Vararg{Any, 4}}","page":"Torus","title":"ManifoldsBase.inner","text":"inner(M::EmbeddedTorus, ::DefaultTorusAtlas, i, a, Xc, Yc)\n\nInner product on EmbeddedTorus in chart i in the DefaultTorusAtlas. between vectors with coordinates Xc and Yc tangent at point with parameters a. Vector coordinates must be given in the induced basis.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/torus.html#ManifoldsBase.is_flat-Tuple{Manifolds.EmbeddedTorus}","page":"Torus","title":"ManifoldsBase.is_flat","text":"is_flat(::EmbeddedTorus)\n\nReturn false. EmbeddedTorus is not a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/torus.html#ManifoldsBase.manifold_dimension-Tuple{Manifolds.EmbeddedTorus}","page":"Torus","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::EmbeddedTorus)\n\nReturn the dimension of the EmbeddedTorus M that is 2.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#The-probability-simplex","page":"Probability simplex","title":"The probability simplex","text":"","category":"section"},{"location":"manifolds/probabilitysimplex.html","page":"Probability simplex","title":"Probability simplex","text":"Modules = [Manifolds, Base]\nPages = [\"manifolds/ProbabilitySimplex.jl\"]\nOrder = [:type, :function]\nPrivate=false\nPublic=true","category":"page"},{"location":"manifolds/probabilitysimplex.html#Manifolds.FisherRaoMetric","page":"Probability simplex","title":"Manifolds.FisherRaoMetric","text":"FisherRaoMetric <: AbstractMetric\n\nThe Fisher-Rao metric or Fisher information metric is a particular Riemannian metric which can be defined on a smooth statistical manifold, i.e., a smooth manifold whose points are probability measures defined on a common probability space.\n\nSee for example the ProbabilitySimplex.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/probabilitysimplex.html#Manifolds.ProbabilitySimplex","page":"Probability simplex","title":"Manifolds.ProbabilitySimplex","text":"ProbabilitySimplex{n,boundary} <: AbstractDecoratorManifold{𝔽}\n\nThe (relative interior of) the probability simplex is the set\n\nΔ^n = biggl p ℝ^n+1 big p_i 0 text for all i=1n+1\ntext and mathbb1p = sum_i=1^n+1 p_i = 1biggr\n\nwhere mathbb1=(11)^mathrmT ℝ^n+1 denotes the vector containing only ones.\n\nIf boundary is set to :open, then the object represents an open simplex. Otherwise, that is when boundary is set to :closed, the boundary is also included:\n\nhatΔ^n = biggl p ℝ^n+1 big p_i geq 0 text for all i=1n+1\ntext and mathbb1p = sum_i=1^n+1 p_i = 1biggr\n\nThis set is also called the unit simplex or standard simplex.\n\nThe tangent space is given by\n\nT_pΔ^n = biggl X ℝ^n+1 big mathbb1X = sum_i=1^n+1 X_i = 0 biggr\n\nThe manifold is implemented assuming the Fisher-Rao metric for the multinomial distribution, which is equivalent to the induced metric from isometrically embedding the probability simplex in the n-sphere of radius 2. The corresponding diffeomorphism varphi mathbb Δ^n mathcal N, where mathcal N subset 2𝕊^n is given by varphi(p) = 2sqrtp.\n\nThis implementation follows the notation in [APSS17].\n\nConstructor\n\nProbabilitySimplex(n::Int; boundary::Symbol=:open)\n\n\n\n\n\n","category":"type"},{"location":"manifolds/probabilitysimplex.html#Base.exp-Tuple{ProbabilitySimplex, Vararg{Any}}","page":"Probability simplex","title":"Base.exp","text":"exp(M::ProbabilitySimplex, p, X)\n\nCompute the exponential map on the probability simplex.\n\nexp_pX = frac12Bigl(p+fracX_p^2lVert X_p rVert^2Bigr)\n+ frac12Bigl(p - fracX_p^2lVert X_p rVert^2Bigr)cos(lVert X_prVert)\n+ frac1lVert X_p rVertsqrtpsin(lVert X_prVert)\n\nwhere X_p = fracXsqrtp, with its division meant elementwise, as well as for the operations X_p^2 and sqrtp.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#Base.log-Tuple{ProbabilitySimplex, Vararg{Any}}","page":"Probability simplex","title":"Base.log","text":"log(M::ProbabilitySimplex, p, q)\n\nCompute the logarithmic map of p and q on the ProbabilitySimplex M.\n\nlog_pq = fracd_Δ^n(pq)sqrt1-sqrtpsqrtq(sqrtpq - sqrtpsqrtqp)\n\nwhere pq and sqrtp is meant elementwise.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#Base.rand-Tuple{ProbabilitySimplex}","page":"Probability simplex","title":"Base.rand","text":"rand(::ProbabilitySimplex; vector_at=nothing, σ::Real=1.0)\n\nWhen vector_at is nothing, return a random (uniform over the Fisher-Rao metric; that is, uniform with respect to the n-sphere whose positive orthant is mapped to the simplex). point x on the ProbabilitySimplex manifold M according to the isometric embedding into the n-sphere by normalizing the vector length of a sample from a multivariate Gaussian. See [Mar72].\n\nWhen vector_at is not nothing, return a (Gaussian) random vector from the tangent space T_pmathrmDelta^nby shifting a multivariate Gaussian with standard deviation σ to have a zero component sum.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#ManifoldDiff.riemannian_gradient-Tuple{ProbabilitySimplex, Any, Any}","page":"Probability simplex","title":"ManifoldDiff.riemannian_gradient","text":"X = riemannian_gradient(M::ProbabilitySimplex{n}, p, Y)\nriemannian_gradient!(M::ProbabilitySimplex{n}, X, p, Y)\n\nGiven a gradient Y = operatornamegrad tilde f(p) in the embedding ℝ^n+1 of the ProbabilitySimplex Δ^n, this function computes the Riemannian gradient X = operatornamegrad f(p) where f is the function tilde f restricted to the manifold.\n\nThe formula reads\n\n X = p Y - p Yp\n\nwhere denotes the emelementwise product.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#Manifolds.manifold_volume-Union{Tuple{ProbabilitySimplex{n}}, Tuple{n}} where n","page":"Probability simplex","title":"Manifolds.manifold_volume","text":"manifold_volume(::ProbabilitySimplex{n}) where {n}\n\nReturn the volume of the ProbabilitySimplex, i.e. volume of the n-dimensional Sphere divided by 2^n+1, corresponding to the volume of its positive orthant.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#Manifolds.volume_density-Union{Tuple{N}, Tuple{ProbabilitySimplex{N}, Any, Any}} where N","page":"Probability simplex","title":"Manifolds.volume_density","text":"volume_density(M::ProbabilitySimplex{N}, p, X) where {N}\n\nCompute the volume density at point p on ProbabilitySimplex M for tangent vector X. It is computed using isometry with positive orthant of a sphere.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#ManifoldsBase.change_metric-Tuple{ProbabilitySimplex, EuclideanMetric, Any, Any}","page":"Probability simplex","title":"ManifoldsBase.change_metric","text":"change_metric(M::ProbabilitySimplex, ::EuclideanMetric, p, X)\n\nTo change the metric, we are looking for a function ccolon T_pΔ^n to T_pΔ^n such that for all XY T_pΔ^n This can be achieved by rewriting representer change in matrix form as (Diagonal(p) - p * p') * X and taking square root of the matrix\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#ManifoldsBase.change_representer-Tuple{ProbabilitySimplex, EuclideanMetric, Any, Any}","page":"Probability simplex","title":"ManifoldsBase.change_representer","text":"change_representer(M::ProbabilitySimplex, ::EuclideanMetric, p, X)\n\nGiven a tangent vector with respect to the metric from the embedding, the EuclideanMetric, the representer of a linear functional on the tangent space is adapted as Z = p * X - p * dot(p X). The first part “compensates” for the divsion by p in the Riemannian metric on the ProbabilitySimplex and the second part performs appropriate projection to keep the vector tangent.\n\nFor details see Proposition 2.3 in [APSS17].\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#ManifoldsBase.check_point-Union{Tuple{boundary}, Tuple{n}, Tuple{ProbabilitySimplex{n, boundary}, Any}} where {n, boundary}","page":"Probability simplex","title":"ManifoldsBase.check_point","text":"check_point(M::ProbabilitySimplex, p; kwargs...)\n\nCheck whether p is a valid point on the ProbabilitySimplex M, i.e. is a point in the embedding with positive entries that sum to one The tolerance for the last test can be set using the kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#ManifoldsBase.check_vector-Tuple{ProbabilitySimplex, Any, Any}","page":"Probability simplex","title":"ManifoldsBase.check_vector","text":"check_vector(M::ProbabilitySimplex, p, X; kwargs... )\n\nCheck whether X is a tangent vector to p on the ProbabilitySimplex M, i.e. after check_point(M,p), X has to be of same dimension as p and its elements have to sum to one. The tolerance for the last test can be set using the kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#ManifoldsBase.distance-Tuple{ProbabilitySimplex, Any, Any}","page":"Probability simplex","title":"ManifoldsBase.distance","text":"distance(M, p, q)\n\nCompute the distance between two points on the ProbabilitySimplex M. The formula reads\n\nd_Δ^n(pq) = 2arccos biggl( sum_i=1^n+1 sqrtp_i q_i biggr)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#ManifoldsBase.injectivity_radius-Union{Tuple{n}, Tuple{ProbabilitySimplex{n}, Any}} where n","page":"Probability simplex","title":"ManifoldsBase.injectivity_radius","text":"injectivity_radius(M, p)\n\nCompute the injectivity radius on the ProbabilitySimplex M at the point p, i.e. the distanceradius to a point near/on the boundary, that could be reached by following the geodesic.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#ManifoldsBase.inner-Union{Tuple{boundary}, Tuple{n}, Tuple{ProbabilitySimplex{n, boundary}, Any, Any, Any}} where {n, boundary}","page":"Probability simplex","title":"ManifoldsBase.inner","text":"inner(M::ProbabilitySimplex, p, X, Y)\n\nCompute the inner product of two tangent vectors X, Y from the tangent space T_pΔ^n at p. The formula reads\n\ng_p(XY) = sum_i=1^n+1fracX_iY_ip_i\n\nWhen M includes boundary, we can just skip coordinates where p_i is equal to 0, see Proposition 2.1 in [AJLS17].\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#ManifoldsBase.inverse_retract-Tuple{ProbabilitySimplex, Any, Any, SoftmaxInverseRetraction}","page":"Probability simplex","title":"ManifoldsBase.inverse_retract","text":"inverse_retract(M::ProbabilitySimplex, p, q, ::SoftmaxInverseRetraction)\n\nCompute a first order approximation by projection. The formula reads\n\noperatornameretr^-1_p q = bigl( I_n+1 - frac1nmathbb1^n+1n+1 bigr)(log(q)-log(p))\n\nwhere mathbb1^mn is the size (m,n) matrix containing ones, and log is applied elementwise.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#ManifoldsBase.is_flat-Tuple{ProbabilitySimplex}","page":"Probability simplex","title":"ManifoldsBase.is_flat","text":"is_flat(::ProbabilitySimplex)\n\nReturn false. ProbabilitySimplex is not a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#ManifoldsBase.manifold_dimension-Union{Tuple{ProbabilitySimplex{n}}, Tuple{n}} where n","page":"Probability simplex","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::ProbabilitySimplex{n})\n\nReturns the manifold dimension of the probability simplex in ℝ^n+1, i.e.\n\n dim_Δ^n = n\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#ManifoldsBase.project-Tuple{ProbabilitySimplex, Any, Any}","page":"Probability simplex","title":"ManifoldsBase.project","text":"project(M::ProbabilitySimplex, p, Y)\n\nProject Y from the embedding onto the tangent space at p on the ProbabilitySimplex M. The formula reads\n\n`math \\operatorname{proj}_{Δ^n}(p,Y) = Y - \\bar{Y} where barY denotes mean of Y.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#ManifoldsBase.project-Tuple{ProbabilitySimplex, Any}","page":"Probability simplex","title":"ManifoldsBase.project","text":"project(M::ProbabilitySimplex, p)\n\nproject p from the embedding onto the ProbabilitySimplex M. The formula reads\n\noperatornameproj_Δ^n(p) = frac1mathbb 1pp\n\nwhere mathbb 1 ℝ denotes the vector of ones. Not that this projection is only well-defined if p has positive entries.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#ManifoldsBase.representation_size-Union{Tuple{ProbabilitySimplex{n}}, Tuple{n}} where n","page":"Probability simplex","title":"ManifoldsBase.representation_size","text":"representation_size(::ProbabilitySimplex{n})\n\nReturn the representation size of points in the n-dimensional probability simplex, i.e. an array size of (n+1,).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#ManifoldsBase.retract-Tuple{ProbabilitySimplex, Any, Any, SoftmaxRetraction}","page":"Probability simplex","title":"ManifoldsBase.retract","text":"retract(M::ProbabilitySimplex, p, X, ::SoftmaxRetraction)\n\nCompute a first order approximation by applying the softmax function. The formula reads\n\noperatornameretr_p X = fracpmathrme^Xpmathrme^X\n\nwhere multiplication, exponentiation and division are meant elementwise.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#ManifoldsBase.riemann_tensor-Tuple{ProbabilitySimplex, Vararg{Any, 4}}","page":"Probability simplex","title":"ManifoldsBase.riemann_tensor","text":"riemann_tensor(::ProbabilitySimplex, p, X, Y, Z)\n\nCompute the Riemann tensor R(XY)Z at point p on ProbabilitySimplex M. It is computed using isometry with positive orthant of a sphere.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#ManifoldsBase.zero_vector-Tuple{ProbabilitySimplex, Any}","page":"Probability simplex","title":"ManifoldsBase.zero_vector","text":"zero_vector(M::ProbabilitySimplex, p)\n\nReturn the zero tangent vector in the tangent space of the point p from the ProbabilitySimplex M, i.e. its representation by the zero vector in the embedding.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#Statistics.mean-Tuple{ProbabilitySimplex, Vararg{Any}}","page":"Probability simplex","title":"Statistics.mean","text":"mean(\n M::ProbabilitySimplex,\n x::AbstractVector,\n [w::AbstractWeights,]\n method = GeodesicInterpolation();\n kwargs...,\n)\n\nCompute the Riemannian mean of x using GeodesicInterpolation.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#Euclidean-metric","page":"Probability simplex","title":"Euclidean metric","text":"","category":"section"},{"location":"manifolds/probabilitysimplex.html","page":"Probability simplex","title":"Probability simplex","text":"Modules = [Manifolds]\nPages = [\"manifolds/ProbabilitySimplexEuclideanMetric.jl\"]\nOrder = [:type, :function]\nPrivate=false\nPublic=true","category":"page"},{"location":"manifolds/probabilitysimplex.html#Base.rand-Tuple{MetricManifold{ℝ, <:ProbabilitySimplex, <:EuclideanMetric}}","page":"Probability simplex","title":"Base.rand","text":"rand(::MetricManifold{ℝ,<:ProbabilitySimplex,<:EuclideanMetric}; vector_at=nothing, σ::Real=1.0)\n\nWhen vector_at is nothing, return a random (uniform) point x on the ProbabilitySimplex with the Euclidean metric manifold M by normalizing independent exponential draws to unit sum, see [Dev86], Theorems 2.1 and 2.2 on p. 207 and 208, respectively.\n\nWhen vector_at is not nothing, return a (Gaussian) random vector from the tangent space T_pmathrmDelta^nby shifting a multivariate Gaussian with standard deviation σ to have a zero component sum.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#Manifolds.manifold_volume-Union{Tuple{MetricManifold{ℝ, <:ProbabilitySimplex{n}, <:EuclideanMetric}}, Tuple{n}} where n","page":"Probability simplex","title":"Manifolds.manifold_volume","text":"manifold_volume(::MetricManifold{ℝ,<:ProbabilitySimplex{n},<:EuclideanMetric})) where {n}\n\nReturn the volume of the ProbabilitySimplex with the Euclidean metric. The formula reads fracsqrtn+1n\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#Manifolds.volume_density-Tuple{MetricManifold{ℝ, <:ProbabilitySimplex, <:EuclideanMetric}, Any, Any}","page":"Probability simplex","title":"Manifolds.volume_density","text":"volume_density(::MetricManifold{ℝ,<:ProbabilitySimplex,<:EuclideanMetric}, p, X)\n\nCompute the volume density at point p on ProbabilitySimplex M for tangent vector X. It is equal to 1.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#Real-probability-amplitudes","page":"Probability simplex","title":"Real probability amplitudes","text":"","category":"section"},{"location":"manifolds/probabilitysimplex.html","page":"Probability simplex","title":"Probability simplex","text":"An isometric embedding of interior of ProbabilitySimplex in positive orthant of the Sphere is established through functions simplex_to_amplitude and amplitude_to_simplex. Some properties extend to the boundary but not all.","category":"page"},{"location":"manifolds/probabilitysimplex.html","page":"Probability simplex","title":"Probability simplex","text":"This embedding isometrically maps the Fisher-Rao metric on the open probability simplex to the sphere of radius 1 with Euclidean metric. More details can be found in Section 2.2 of [AJLS17].","category":"page"},{"location":"manifolds/probabilitysimplex.html","page":"Probability simplex","title":"Probability simplex","text":"The name derives from the notion of probability amplitudes in quantum mechanics. They are complex-valued and their squared norm corresponds to probability. This construction restricted to real valued amplitudes results in this embedding.","category":"page"},{"location":"manifolds/probabilitysimplex.html","page":"Probability simplex","title":"Probability simplex","text":"Modules = [Manifolds]\nPages = [\"manifolds/ProbabilitySimplex.jl\"]\nOrder = [:type, :function]\nPrivate=true\nPublic=false","category":"page"},{"location":"manifolds/probabilitysimplex.html#Manifolds.amplitude_to_simplex-Tuple{ProbabilitySimplex, Any}","page":"Probability simplex","title":"Manifolds.amplitude_to_simplex","text":"amplitude_to_simplex(M::ProbabilitySimplex{N}, p) where {N}\n\nConvert point (real) probability amplitude p on to a point on ProbabilitySimplex. The formula reads (p_1^2 p_2^2 p_N+1^2). This is an isometry from the interior of the positive orthant of a sphere to interior of the probability simplex.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#Manifolds.amplitude_to_simplex_diff-Tuple{ProbabilitySimplex, Any, Any}","page":"Probability simplex","title":"Manifolds.amplitude_to_simplex_diff","text":"amplitude_to_simplex_diff(M::ProbabilitySimplex, p, X)\n\nCompute differential of amplitude_to_simplex of a point p on ProbabilitySimplex at tangent vector X from the tangent space at p from a sphere.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#Manifolds.simplex_to_amplitude-Tuple{ProbabilitySimplex, Any}","page":"Probability simplex","title":"Manifolds.simplex_to_amplitude","text":"simplex_to_amplitude(M::ProbabilitySimplex, p)\n\nConvert point p on ProbabilitySimplex to (real) probability amplitude. The formula reads (sqrtp_1 sqrtp_2 sqrtp_N+1). This is an isometry from the interior of the probability simplex to the interior of the positive orthant of a sphere.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#Manifolds.simplex_to_amplitude_diff-Tuple{ProbabilitySimplex, Any, Any}","page":"Probability simplex","title":"Manifolds.simplex_to_amplitude_diff","text":"simplex_to_amplitude_diff(M::ProbabilitySimplex, p, X)\n\nCompute differential of simplex_to_amplitude of a point on p one ProbabilitySimplex at tangent vector X from the tangent space at p from a sphere.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/probabilitysimplex.html#Literature","page":"Probability simplex","title":"Literature","text":"","category":"section"},{"location":"manifolds/probabilitysimplex.html","page":"Probability simplex","title":"Probability simplex","text":"
    [AJLS17]
    \n
    \n
    N. Ay, J. Jost, H. V. Lê and L. Schwachhöfer. Information Geometry. Springer Cham (2017).
    \n
    [Dev86]
    \n
    \n
    L. Devroye. Non-Uniform Random Variate Generation. Springer New York, NY (1986).
    \n
    [Mar72]
    \n
    \n
    G. Marsaglia. Choosing a Point from the Surface of a Sphere. Annals of Mathematical Statistics 43, 645–646 (1972).
    \n
    [APSS17]
    \n
    \n
    F. Åström, S. Petra, B. Schmitzer and C. Schnörr. Image Labeling by Assignment. Journal of Mathematical Imaging and Vision 58, 211–238 (2017), arXiv:1603.05285.
    \n
    \n
    ","category":"page"},{"location":"manifolds/generalizedstiefel.html#Generalized-Stiefel","page":"Generalized Stiefel","title":"Generalized Stiefel","text":"","category":"section"},{"location":"manifolds/generalizedstiefel.html","page":"Generalized Stiefel","title":"Generalized Stiefel","text":"Modules = [Manifolds]\nPages = [\"manifolds/GeneralizedStiefel.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/generalizedstiefel.html#Manifolds.GeneralizedStiefel","page":"Generalized Stiefel","title":"Manifolds.GeneralizedStiefel","text":"GeneralizedStiefel{n,k,𝔽,B} <: AbstractDecoratorManifold{𝔽}\n\nThe Generalized Stiefel manifold consists of all ntimes k, ngeq k orthonormal matrices w.r.t. an arbitrary scalar product with symmetric positive definite matrix Bin R^n n, i.e.\n\noperatornameSt(nkB) = bigl p in mathbb F^n k big p^mathrmH B p = I_k bigr\n\nwhere 𝔽 ℝ ℂ, cdot^mathrmH denotes the complex conjugate transpose or Hermitian, and I_k in mathbb R^k k denotes the k k identity matrix.\n\nIn the case B=I_k one gets the usual Stiefel manifold.\n\nThe tangent space at a point pinmathcal M=operatornameSt(nkB) is given by\n\nT_pmathcal M = X in 𝔽^n k p^mathrmHBX + X^mathrmHBp=0_n\n\nwhere 0_k is the k k zero matrix.\n\nThis manifold is modeled as an embedded manifold to the Euclidean, i.e. several functions like the zero_vector are inherited from the embedding.\n\nThe manifold is named after Eduard L. Stiefel (1909–1978).\n\nConstructor\n\nGeneralizedStiefel(n, k, B=I_n, F=ℝ)\n\nGenerate the (real-valued) Generalized Stiefel manifold of ntimes k dimensional orthonormal matrices with scalar product B.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/generalizedstiefel.html#Base.rand-Tuple{GeneralizedStiefel}","page":"Generalized Stiefel","title":"Base.rand","text":"rand(::GeneralizedStiefel; vector_at=nothing, σ::Real=1.0)\n\nWhen vector_at is nothing, return a random (Gaussian) point p on the GeneralizedStiefel manifold M by generating a (Gaussian) matrix with standard deviation σ and return the (generalized) orthogonalized version, i.e. return the projection onto the manifold of the Q component of the QR decomposition of the random matrix of size nk.\n\nWhen vector_at is not nothing, return a (Gaussian) random vector from the tangent space T_vector_atmathrmSt(nk) with mean zero and standard deviation σ by projecting a random Matrix onto the tangent vector at vector_at.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedstiefel.html#ManifoldsBase.check_point-Union{Tuple{𝔽}, Tuple{k}, Tuple{n}, Tuple{GeneralizedStiefel{n, k, 𝔽}, Any}} where {n, k, 𝔽}","page":"Generalized Stiefel","title":"ManifoldsBase.check_point","text":"check_point(M::GeneralizedStiefel, p; kwargs...)\n\nCheck whether p is a valid point on the GeneralizedStiefel M=operatornameSt(nkB), i.e. that it has the right AbstractNumbers type and x^mathrmHBx is (approximately) the identity, where cdot^mathrmH is the complex conjugate transpose. The settings for approximately can be set with kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedstiefel.html#ManifoldsBase.check_vector-Union{Tuple{𝔽}, Tuple{k}, Tuple{n}, Tuple{GeneralizedStiefel{n, k, 𝔽}, Any, Any}} where {n, k, 𝔽}","page":"Generalized Stiefel","title":"ManifoldsBase.check_vector","text":"check_vector(M::GeneralizedStiefel, p, X; kwargs...)\n\nCheck whether X is a valid tangent vector at p on the GeneralizedStiefel M=operatornameSt(nkB), i.e. the AbstractNumbers fits, p is a valid point on M and it (approximately) holds that p^mathrmHBX + overlineX^mathrmHBp = 0, where kwargs... is passed to the isapprox.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedstiefel.html#ManifoldsBase.inner-Tuple{GeneralizedStiefel, Any, Any, Any}","page":"Generalized Stiefel","title":"ManifoldsBase.inner","text":"inner(M::GeneralizedStiefel, p, X, Y)\n\nCompute the inner product for two tangent vectors X, Y from the tangent space of p on the GeneralizedStiefel manifold M. The formula reads\n\n(X Y)_p = operatornametrace(v^mathrmHBw)\n\ni.e. the metric induced by the scalar product B from the embedding, restricted to the tangent space.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedstiefel.html#ManifoldsBase.is_flat-Tuple{GeneralizedStiefel}","page":"Generalized Stiefel","title":"ManifoldsBase.is_flat","text":"is_flat(M::GeneralizedStiefel)\n\nReturn true if GeneralizedStiefel M is one-dimensional.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedstiefel.html#ManifoldsBase.manifold_dimension-Union{Tuple{GeneralizedStiefel{n, k, ℝ}}, Tuple{k}, Tuple{n}} where {n, k}","page":"Generalized Stiefel","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::GeneralizedStiefel)\n\nReturn the dimension of the GeneralizedStiefel manifold M=operatornameSt(nkB𝔽). The dimension is given by\n\nbeginaligned\ndim mathrmSt(n k B ℝ) = nk - frac12k(k+1) \ndim mathrmSt(n k B ℂ) = 2nk - k^2\ndim mathrmSt(n k B ℍ) = 4nk - k(2k-1)\nendaligned\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedstiefel.html#ManifoldsBase.project-Tuple{GeneralizedStiefel, Any, Any}","page":"Generalized Stiefel","title":"ManifoldsBase.project","text":"project(M:GeneralizedStiefel, p, X)\n\nProject X onto the tangent space of p to the GeneralizedStiefel manifold M. The formula reads\n\noperatornameproj_operatornameSt(nk)(pX) = X - poperatornameSym(p^mathrmHBX)\n\nwhere operatornameSym(y) is the symmetrization of y, e.g. by operatornameSym(y) = fracy^mathrmH+y2.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedstiefel.html#ManifoldsBase.project-Tuple{GeneralizedStiefel, Any}","page":"Generalized Stiefel","title":"ManifoldsBase.project","text":"project(M::GeneralizedStiefel,p)\n\nProject p from the embedding onto the GeneralizedStiefel M, i.e. compute q as the polar decomposition of p such that q^mathrmHBq is the identity, where cdot^mathrmH denotes the hermitian, i.e. complex conjugate transposed.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedstiefel.html#ManifoldsBase.retract-Tuple{GeneralizedStiefel, Vararg{Any}}","page":"Generalized Stiefel","title":"ManifoldsBase.retract","text":"retract(M::GeneralizedStiefel, p, X)\nretract(M::GeneralizedStiefel, p, X, ::PolarRetraction)\nretract(M::GeneralizedStiefel, p, X, ::ProjectionRetraction)\n\nCompute the SVD-based retraction PolarRetraction on the GeneralizedStiefel manifold M, which in this case is the same as the projection based retraction employing the exponential map in the embedding and projecting the result back to the manifold.\n\nThe default retraction for this manifold is the ProjectionRetraction.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplecticstiefel.html#Symplectic-Stiefel","page":"Symplectic Stiefel","title":"Symplectic Stiefel","text":"","category":"section"},{"location":"manifolds/symplecticstiefel.html","page":"Symplectic Stiefel","title":"Symplectic Stiefel","text":"The SymplecticStiefel manifold, denoted operatornameSpSt(2n 2k), represents canonical symplectic bases of 2k dimensonal symplectic subspaces of mathbbR^2n times 2n. This means that the columns of each element p in operatornameSpSt(2n 2k) subset mathbbR^2n times 2k constitute a canonical symplectic basis of operatornamespan(p). The canonical symplectic form is a non-degenerate, bilinear, and skew symmetric map omega_2kcolon mathbbF^2k times mathbbF^2k rightarrow mathbbF, given by omega_2k(x y) = x^T Q_2k y for elements x y in mathbbF^2k, with","category":"page"},{"location":"manifolds/symplecticstiefel.html","page":"Symplectic Stiefel","title":"Symplectic Stiefel","text":" Q_2k =\n beginbmatrix\n 0_k I_k \n -I_k 0_k\n endbmatrix","category":"page"},{"location":"manifolds/symplecticstiefel.html","page":"Symplectic Stiefel","title":"Symplectic Stiefel","text":"Specifically given an element p in operatornameSpSt(2n 2k) we require that","category":"page"},{"location":"manifolds/symplecticstiefel.html","page":"Symplectic Stiefel","title":"Symplectic Stiefel","text":" omega_2n (p x p y) = x^T(p^TQ_2np)y = x^TQ_2ky = omega_2k(x y) forall x y in mathbbF^2k","category":"page"},{"location":"manifolds/symplecticstiefel.html","page":"Symplectic Stiefel","title":"Symplectic Stiefel","text":"leading to the requirement on p that p^TQ_2np = Q_2k. In the case that k = n, this manifold reduces to the Symplectic manifold, which is also known as the symplectic group.","category":"page"},{"location":"manifolds/symplecticstiefel.html","page":"Symplectic Stiefel","title":"Symplectic Stiefel","text":"Modules = [Manifolds]\nPages = [\"manifolds/SymplecticStiefel.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/symplecticstiefel.html#Manifolds.SymplecticStiefel","page":"Symplectic Stiefel","title":"Manifolds.SymplecticStiefel","text":"SymplecticStiefel{n, k, 𝔽} <: AbstractEmbeddedManifold{𝔽, DefaultIsometricEmbeddingType}\n\nThe symplectic Stiefel manifold consists of all 2n 2k n geq k matrices satisfying the requirement\n\noperatornameSpSt(2n 2k ℝ)\n = bigl p ℝ^2n 2n big p^mathrmTQ_2np = Q_2k bigr\n\nwhere\n\nQ_2n =\nbeginbmatrix\n 0_n I_n \n -I_n 0_n\nendbmatrix\n\nThe symplectic Stiefel tangent space at p can be parametrized as [BZ21]\n\n beginalign*\n T_poperatornameSpSt(2n 2k)\n = X in mathbbR^2n times 2k p^TQ_2nX + X^TQ_2np = 0 \n = X = pΩ + p^sB \n Ω ℝ^2k 2k Ω^+ = -Ω \n p^s operatornameSpSt(2n 2(n- k)) B ℝ^2(n-k) 2k \n endalign*\n\nwhere Ω in mathfraksp(2nF) is Hamiltonian and p^s means the symplectic complement of p s.t. p^+p^s = 0.\n\nConstructor\n\nSymplecticStiefel(2n::Int, 2k::Int, field::AbstractNumbers=ℝ)\n -> SymplecticStiefel{div(2n, 2), div(2k, 2), field}()\n\nGenerate the (real-valued) symplectic Stiefel manifold of 2n times 2k matrices which span a 2k dimensional symplectic subspace of ℝ^2n times 2n. The constructor for the SymplecticStiefel manifold accepts the even column dimension 2n and an even number of columns 2k for the real symplectic Stiefel manifold with elements p in ℝ^2n 2k.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/symplecticstiefel.html#Base.exp-Tuple{SymplecticStiefel, Any, Any}","page":"Symplectic Stiefel","title":"Base.exp","text":"exp(::SymplecticStiefel, p, X)\nexp!(M::SymplecticStiefel, q, p, X)\n\nCompute the exponential mapping\n\n operatornameexpcolon ToperatornameSpSt(2n 2k)\n rightarrow operatornameSpSt(2n 2k)\n\nat a point p in operatornameSpSt(2n 2k) in the direction of X in T_poperatornameSpSt(2n 2k).\n\nThe tangent vector X can be written in the form X = barOmegap [BZ21], with\n\n barOmega = X (p^mathrmTp)^-1p^mathrmT\n + Q_2np(p^mathrmTp)^-1X^mathrmT(I_2n - Q_2n^mathrmTp(p^mathrmTp)^-1p^mathrmTQ_2n)Q_2n\n in ℝ^2n times 2n\n\nwhere Q_2n is the SymplecticMatrix. Using this expression for X, the exponential mapping can be computed as\n\n operatornameexp_p(X) = operatornameExp(barOmega - barOmega^mathrmT)\n operatornameExp(barOmega^mathrmT)p\n\nwhere operatornameExp(cdot) denotes the matrix exponential.\n\nComputing the above mapping directly however, requires taking matrix exponentials of two 2n times 2n matrices, which is computationally expensive when n increases. Therefore we instead follow [BZ21] who express the above exponential mapping in a way which only requires taking matrix exponentials of an 8k times 8k matrix and a 4k times 4k matrix.\n\nTo this end, first define\n\nbarA = Q_2kp^mathrmTX(p^mathrmTp)^-1Q_2k +\n (p^mathrmTp)^-1X^mathrmT(p - Q_2n^mathrmTp(p^mathrmTp)^-1Q_2k) in ℝ^2k times 2k\n\nand\n\nbarH = (I_2n - pp^+)Q_2nX(p^mathrmTp)^-1Q_2k in ℝ^2n times 2k\n\nWe then let barDelta = pbarA + barH, and define the matrices\n\n γ = leftleft(I_2n - frac12pp^+right)barDelta quad\n -p right in ℝ^2n times 4k\n\nand\n\n λ = leftQ_2n^mathrmTpQ_2k quad\n left(barDelta^+left(I_2n\n - frac12pp^+right)right)^mathrmTright in ℝ^2n times 4k\n\nWith the above defined matrices it holds that barOmega = λγ^mathrmT. As a last preliminary step, concatenate γ and λ to define the matrices Γ = λ quad -γ in ℝ^2n times 8k and Λ = γ quad λ in ℝ^2n times 8k.\n\nWith these matrix constructions done, we can compute the exponential mapping as\n\n operatornameexp_p(X) =\n Γ operatornameExp(ΛΓ^mathrmT)\n beginbmatrix\n 0_4k \n I_4k\n endbmatrix\n operatornameExp(λγ^mathrmT)\n beginbmatrix\n 0_2k \n I_2k\n endbmatrix\n\nwhich only requires computing the matrix exponentials of ΛΓ^mathrmT in ℝ^8k times 8k and λγ^mathrmT in ℝ^4k times 4k.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplecticstiefel.html#Base.inv-Union{Tuple{k}, Tuple{n}, Tuple{SymplecticStiefel{n, k}, Any}} where {n, k}","page":"Symplectic Stiefel","title":"Base.inv","text":"inv(::SymplecticStiefel{n, k}, A)\ninv!(::SymplecticStiefel{n, k}, q, p)\n\nCompute the symplectic inverse A^+ of matrix A ℝ^2n 2k. Given a matrix\n\nA ℝ^2n 2kquad\nA =\nbeginbmatrix\nA_1 1 A_1 2 \nA_2 1 A_2 2\nendbmatrix A_i j in ℝ^2n 2k\n\nthe symplectic inverse is defined as:\n\nA^+ = Q_2k^mathrmT A^mathrmT Q_2n\n\nwhere\n\nQ_2n =\nbeginbmatrix\n0_n I_n \n -I_n 0_n\nendbmatrix\n\nFor any p in operatornameSpSt(2n 2k) we have that p^+p = I_2k.\n\nThe symplectic inverse of a matrix A can be expressed explicitly as:\n\nA^+ =\nbeginbmatrix\n A_2 2^mathrmT -A_1 2^mathrmT 12mm\n -A_2 1^mathrmT A_1 1^mathrmT\nendbmatrix\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplecticstiefel.html#Base.rand-Union{Tuple{SymplecticStiefel{n}}, Tuple{n}} where n","page":"Symplectic Stiefel","title":"Base.rand","text":"rand(M::SymplecticStiefel; vector_at=nothing,\n hamiltonian_norm=(vector_at === nothing ? 1/2 : 1.0))\n\nGenerate a random point p in operatornameSpSt(2n 2k) or a random tangent vector X in T_poperatornameSpSt(2n 2k) if vector_at is set to a point p in operatornameSp(2n).\n\nA random point on operatornameSpSt(2n 2k) is found by first generating a random point on the symplectic manifold operatornameSp(2n), and then projecting onto the Symplectic Stiefel manifold using the canonical_project π_operatornameSpSt(2n 2k). That is, p = π_operatornameSpSt(2n 2k)(p_operatornameSp).\n\nTo generate a random tangent vector in T_poperatornameSpSt(2n 2k) this code exploits the second tangent vector space parametrization of SymplecticStiefel, showing that any X in T_poperatornameSpSt(2n 2k) can be written as X = pΩ_X + p^sB_X. To generate random tangent vectors at p then, this function sets B_X = 0 and generates a random Hamiltonian matrix Ω_X in mathfraksp(2nF) with Frobenius norm of hamiltonian_norm before returning X = pΩ_X.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplecticstiefel.html#ManifoldDiff.riemannian_gradient-Tuple{SymplecticStiefel, Any, Any}","page":"Symplectic Stiefel","title":"ManifoldDiff.riemannian_gradient","text":"X = riemannian_gradient(::SymplecticStiefel, f, p, Y; embedding_metric::EuclideanMetric=EuclideanMetric())\nriemannian_gradient!(::SymplecticStiefel, f, X, p, Y; embedding_metric::EuclideanMetric=EuclideanMetric())\n\nCompute the riemannian gradient X of f on SymplecticStiefel at a point p, provided that the gradient of the function tilde f, which is f continued into the embedding is given by Y. The metric in the embedding is the Euclidean metric.\n\nThe manifold gradient X is computed from Y as\n\n X = Yp^mathrmTp + Q_2npY^mathrmTQ_2np\n\nwhere Q_2n is the SymplecticMatrix.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplecticstiefel.html#Manifolds.canonical_project-Union{Tuple{k}, Tuple{n}, Tuple{SymplecticStiefel{n, k}, Any}} where {n, k}","page":"Symplectic Stiefel","title":"Manifolds.canonical_project","text":"canonical_project(::SymplecticStiefel, p_Sp)\ncanonical_project!(::SymplecticStiefel{n,k}, p, p_Sp)\n\nDefine the canonical projection from operatornameSp(2n 2n) onto operatornameSpSt(2n 2k), by projecting onto the first k columns and the n + 1'th onto the n + k'th columns [BZ21].\n\nIt is assumed that the point p is on operatornameSp(2n 2n).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplecticstiefel.html#Manifolds.get_total_space-Union{Tuple{SymplecticStiefel{n, k, 𝔽}}, Tuple{𝔽}, Tuple{k}, Tuple{n}} where {n, k, 𝔽}","page":"Symplectic Stiefel","title":"Manifolds.get_total_space","text":"get_total_space(::SymplecticStiefel)\n\nReturn the total space of the SymplecticStiefel manifold, which is the corresponding Symplectic manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplecticstiefel.html#Manifolds.symplectic_inverse_times-Union{Tuple{k}, Tuple{n}, Tuple{SymplecticStiefel{n, k}, Any, Any}} where {n, k}","page":"Symplectic Stiefel","title":"Manifolds.symplectic_inverse_times","text":"symplectic_inverse_times(::SymplecticStiefel, p, q)\nsymplectic_inverse_times!(::SymplecticStiefel, A, p, q)\n\nDirectly compute the symplectic inverse of p in operatornameSpSt(2n 2k), multiplied with q in operatornameSpSt(2n 2k). That is, this function efficiently computes p^+q = (Q_2kp^mathrmTQ_2n)q in ℝ^2k times 2k, where Q_2n Q_2k are the SymplecticMatrix of sizes 2n times 2n and 2k times 2k respectively.\n\nThis function performs this common operation without allocating more than a 2k times 2k matrix to store the result in, or in the case of the in-place function, without allocating memory at all.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplecticstiefel.html#ManifoldsBase.check_point-Union{Tuple{k}, Tuple{n}, Tuple{SymplecticStiefel{n, k}, Any}} where {n, k}","page":"Symplectic Stiefel","title":"ManifoldsBase.check_point","text":"check_point(M::SymplecticStiefel, p; kwargs...)\n\nCheck whether p is a valid point on the SymplecticStiefel, operatornameSpSt(2n 2k) manifold. That is, the point has the right AbstractNumbers type and p^+p is (approximately) the identity, where for A in mathbbR^2n times 2k, A^+ = Q_2k^mathrmTA^mathrmTQ_2n is the symplectic inverse, with\n\nQ_2n =\nbeginbmatrix\n0_n I_n \n -I_n 0_n\nendbmatrix\n\nThe tolerance can be set with kwargs... (e.g. atol = 1.0e-14).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplecticstiefel.html#ManifoldsBase.check_vector-Tuple{SymplecticStiefel, Vararg{Any}}","page":"Symplectic Stiefel","title":"ManifoldsBase.check_vector","text":"check_vector(M::Symplectic, p, X; kwargs...)\n\nChecks whether X is a valid tangent vector at p on the SymplecticStiefel, operatornameSpSt(2n 2k) manifold. First recall the definition of the symplectic inverse for A in mathbbR^2n times 2k, A^+ = Q_2k^mathrmTA^mathrmTQ_2n is the symplectic inverse, with\n\n Q_2n =\n beginbmatrix\n 0_n I_n \n -I_n 0_n\nendbmatrix\n\nThe we check that H = p^+X in 𝔤_2k, where 𝔤 is the Lie Algebra of the symplectic group operatornameSp(2k), characterized as [BZ21],\n\n 𝔤_2k = H in ℝ^2k times 2k H^+ = -H \n\nThe tolerance can be set with kwargs... (e.g. atol = 1.0e-14).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplecticstiefel.html#ManifoldsBase.inner-Union{Tuple{k}, Tuple{n}, Tuple{SymplecticStiefel{n, k}, Any, Any, Any}} where {n, k}","page":"Symplectic Stiefel","title":"ManifoldsBase.inner","text":"inner(M::SymplecticStiefel{n, k}, p, X. Y)\n\nCompute the Riemannian inner product g^operatornameSpSt at p in operatornameSpSt between tangent vectors X X in T_poperatornameSpSt. Given by Proposition 3.10 in [BZ21].\n\ng^operatornameSpSt_p(X Y)\n = operatornametrleft(X^mathrmTleft(I_2n -\n frac12Q_2n^mathrmTp(p^mathrmTp)^-1p^mathrmTQ_2nright)Y(p^mathrmTp)^-1right)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplecticstiefel.html#ManifoldsBase.inverse_retract-Tuple{SymplecticStiefel, Any, Any, CayleyInverseRetraction}","page":"Symplectic Stiefel","title":"ManifoldsBase.inverse_retract","text":"inverse_retract(::SymplecticStiefel, p, q, ::CayleyInverseRetraction)\ninverse_retract!(::SymplecticStiefel, q, p, X, ::CayleyInverseRetraction)\n\nCompute the Cayley Inverse Retraction X = mathcalL_p^operatornameSpSt(q) such that the Cayley Retraction from p along X lands at q, i.e. mathcalR_p(X) = q [BZ21].\n\nFirst, recall the definition the standard symplectic matrix\n\nQ =\nbeginbmatrix\n 0 I \n-I 0\nendbmatrix\n\nas well as the symplectic inverse of a matrix A, A^+ = Q^mathrmT A^mathrmT Q.\n\nFor p q operatornameSpSt(2n 2k ℝ) then, we can define the inverse cayley retraction as long as the following matrices exist.\n\n U = (I + p^+ q)^-1 in ℝ^2k times 2k\n quad\n V = (I + q^+ p)^-1 in ℝ^2k times 2k\n\nIf that is the case, the inverse cayley retration at p applied to q is\n\nmathcalL_p^operatornameSp(q) = 2pbigl(V - Ubigr) + 2bigl((p + q)U - pbigr)\n T_poperatornameSp(2n)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplecticstiefel.html#ManifoldsBase.is_flat-Tuple{SymplecticStiefel}","page":"Symplectic Stiefel","title":"ManifoldsBase.is_flat","text":"is_flat(::SymplecticStiefel)\n\nReturn false. SymplecticStiefel is not a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplecticstiefel.html#ManifoldsBase.manifold_dimension-Union{Tuple{SymplecticStiefel{n, k}}, Tuple{k}, Tuple{n}} where {n, k}","page":"Symplectic Stiefel","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(::SymplecticStiefel{n, k})\n\nReturns the dimension of the symplectic Stiefel manifold embedded in ℝ^2n times 2k, i.e. [BZ21]\n\n operatornamedim(operatornameSpSt(2n 2k)) = (4n - 2k + 1)k\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplecticstiefel.html#ManifoldsBase.project-Tuple{SymplecticStiefel, Any, Any}","page":"Symplectic Stiefel","title":"ManifoldsBase.project","text":"project(::SymplecticStiefel, p, A)\nproject!(::SymplecticStiefel, Y, p, A)\n\nGiven a point p in operatornameSpSt(2n 2k), project an element A in mathbbR^2n times 2k onto the tangent space T_poperatornameSpSt(2n 2k) relative to the euclidean metric of the embedding mathbbR^2n times 2k.\n\nThat is, we find the element X in T_poperatornameSpSt(2n 2k) which solves the constrained optimization problem\n\n operatornamemin_X in mathbbR^2n times 2k frac12X - A^2 quad\n textst\n h(X)colon= X^mathrmT Q p + p^mathrmT Q X = 0\n\nwhere h mathbbR^2n times 2k rightarrow operatornameskew(2k) defines the restriction of X onto the tangent space T_poperatornameSpSt(2n 2k).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplecticstiefel.html#ManifoldsBase.retract-Tuple{SymplecticStiefel, Any, Any, CayleyRetraction}","page":"Symplectic Stiefel","title":"ManifoldsBase.retract","text":"retract(::SymplecticStiefel, p, X, ::CayleyRetraction)\nretract!(::SymplecticStiefel, q, p, X, ::CayleyRetraction)\n\nCompute the Cayley retraction on the Symplectic Stiefel manifold, computed inplace of q from p along X.\n\nGiven a point p in operatornameSpSt(2n 2k), every tangent vector X in T_poperatornameSpSt(2n 2k) is of the form X = tildeOmegap, with\n\n tildeOmega = left(I_2n - frac12pp^+right)Xp^+ -\n pX^+left(I_2n - frac12pp^+right) in ℝ^2n times 2n\n\nas shown in Proposition 3.5 of [BZ21]. Using this representation of X, the Cayley retraction on operatornameSpSt(2n 2k) is defined pointwise as\n\n mathcalR_p(X) = operatornamecayleft(frac12tildeOmegaright)p\n\nThe operator operatornamecay(A) = (I - A)^-1(I + A) is the Cayley transform.\n\nHowever, the computation of an 2n times 2n matrix inverse in the expression above can be reduced down to inverting a 2k times 2k matrix due to Proposition 5.2 of [BZ21].\n\nLet A = p^+X and H = X - pA. Then an equivalent expression for the Cayley retraction defined pointwise above is\n\n mathcalR_p(X) = -p + (H + 2p)(H^+H4 - A2 + I_2k)^-1\n\nIt is this expression we compute inplace of q.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplecticstiefel.html#Literature","page":"Symplectic Stiefel","title":"Literature","text":"","category":"section"},{"location":"manifolds/symplecticstiefel.html","page":"Symplectic Stiefel","title":"Symplectic Stiefel","text":"
    [BZ21]
    \n
    \n
    T. Bendokat and R. Zimmermann. The real symplectic Stiefel and Grassmann manifolds: metrics, geodesics and applications, arXiv Preprint, 2108.12447 (2021).
    \n
    \n
    ","category":"page"},{"location":"manifolds/connection.html#ConnectionSection","page":"Connection manifold","title":"Connection manifold","text":"","category":"section"},{"location":"manifolds/connection.html","page":"Connection manifold","title":"Connection manifold","text":"A connection manifold always consists of a topological manifold together with a connection Gamma.","category":"page"},{"location":"manifolds/connection.html","page":"Connection manifold","title":"Connection manifold","text":"However, often there is an implicitly assumed (default) connection, like the LeviCivitaConnection connection on a Riemannian manifold. It is not necessary to use this decorator if you implement just one (or the first) connection. If you later introduce a second, the old (first) connection can be used without an explicitly stated connection.","category":"page"},{"location":"manifolds/connection.html","page":"Connection manifold","title":"Connection manifold","text":"This manifold decorator serves two purposes:","category":"page"},{"location":"manifolds/connection.html","page":"Connection manifold","title":"Connection manifold","text":"to implement different connections (e.g. in closed form) for one AbstractManifold\nto provide a way to compute geodesics on manifolds, where this AbstractAffineConnection does not yield a closed formula.","category":"page"},{"location":"manifolds/connection.html","page":"Connection manifold","title":"Connection manifold","text":"An example of usage can be found in Cartan-Schouten connections, see AbstractCartanSchoutenConnection.","category":"page"},{"location":"manifolds/connection.html","page":"Connection manifold","title":"Connection manifold","text":"Pages = [\"connection.md\"]\nDepth = 2","category":"page"},{"location":"manifolds/connection.html#Types","page":"Connection manifold","title":"Types","text":"","category":"section"},{"location":"manifolds/connection.html","page":"Connection manifold","title":"Connection manifold","text":"Modules = [Manifolds, ManifoldsBase]\nPages = [\"manifolds/ConnectionManifold.jl\"]\nOrder = [:type]","category":"page"},{"location":"manifolds/connection.html#Manifolds.AbstractAffineConnection","page":"Connection manifold","title":"Manifolds.AbstractAffineConnection","text":"AbstractAffineConnection\n\nAbstract type for affine connections on a manifold.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/connection.html#Manifolds.ConnectionManifold","page":"Connection manifold","title":"Manifolds.ConnectionManifold","text":"ConnectionManifold{𝔽,,M<:AbstractManifold{𝔽},G<:AbstractAffineConnection} <: AbstractDecoratorManifold{𝔽}\n\nConstructor\n\nConnectionManifold(M, C)\n\nDecorate the AbstractManifold M with AbstractAffineConnection C.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/connection.html#Manifolds.IsConnectionManifold","page":"Connection manifold","title":"Manifolds.IsConnectionManifold","text":"IsConnectionManifold <: AbstractTrait\n\nSpecify that a certain decorated Manifold is a connection manifold in the sence that it provides explicit connection properties, extending/changing the default connection properties of a manifold.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/connection.html#Manifolds.IsDefaultConnection","page":"Connection manifold","title":"Manifolds.IsDefaultConnection","text":"IsDefaultConnection{G<:AbstractAffineConnection}\n\nSpecify that a certain AbstractAffineConnection is the default connection for a manifold. This way the corresponding ConnectionManifold falls back to the default methods of the manifold it decorates.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/connection.html#Manifolds.LeviCivitaConnection","page":"Connection manifold","title":"Manifolds.LeviCivitaConnection","text":"LeviCivitaConnection\n\nThe Levi-Civita connection of a Riemannian manifold.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/connection.html#Functions","page":"Connection manifold","title":"Functions","text":"","category":"section"},{"location":"manifolds/connection.html","page":"Connection manifold","title":"Connection manifold","text":"Modules = [Manifolds, ManifoldsBase]\nPages = [\"manifolds/ConnectionManifold.jl\"]\nOrder = [:function]","category":"page"},{"location":"manifolds/connection.html#Base.exp-Tuple{ManifoldsBase.TraitList{IsConnectionManifold}, AbstractDecoratorManifold, Any, Any}","page":"Connection manifold","title":"Base.exp","text":"exp(::TraitList{IsConnectionManifold}, M::AbstractDecoratorManifold, p, X)\n\nCompute the exponential map on a manifold that IsConnectionManifold M equipped with corresponding affine connection.\n\nIf M is a MetricManifold with a IsDefaultMetric trait, this method falls back to exp(M, p, X).\n\nOtherwise it numerically integrates the underlying ODE, see solve_exp_ode. Currently, the numerical integration is only accurate when using a single coordinate chart that covers the entire manifold. This excludes coordinates in an embedded space.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/connection.html#Manifolds.christoffel_symbols_first-Tuple{AbstractManifold, Any, AbstractBasis}","page":"Connection manifold","title":"Manifolds.christoffel_symbols_first","text":"christoffel_symbols_first(\n M::AbstractManifold,\n p,\n B::AbstractBasis;\n backend::AbstractDiffBackend = default_differential_backend(),\n)\n\nCompute the Christoffel symbols of the first kind in local coordinates of basis B. The Christoffel symbols are (in Einstein summation convention)\n\nΓ_ijk = frac12 Biglg_kji + g_ikj - g_ijkBigr\n\nwhere g_ijk=frac p^k g_ij is the coordinate derivative of the local representation of the metric tensor. The dimensions of the resulting multi-dimensional array are ordered (ijk).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/connection.html#Manifolds.christoffel_symbols_second-Tuple{AbstractManifold, Any, AbstractBasis}","page":"Connection manifold","title":"Manifolds.christoffel_symbols_second","text":"christoffel_symbols_second(\n M::AbstractManifold,\n p,\n B::AbstractBasis;\n backend::AbstractDiffBackend = default_differential_backend(),\n)\n\nCompute the Christoffel symbols of the second kind in local coordinates of basis B. For affine connection manifold the Christoffel symbols need to be explicitly implemented while, for a MetricManifold they are computed as (in Einstein summation convention)\n\nΓ^l_ij = g^kl Γ_ijk\n\nwhere Γ_ijk are the Christoffel symbols of the first kind (see christoffel_symbols_first), and g^kl is the inverse of the local representation of the metric tensor. The dimensions of the resulting multi-dimensional array are ordered (lij).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/connection.html#Manifolds.christoffel_symbols_second_jacobian-Tuple{AbstractManifold, Any, AbstractBasis}","page":"Connection manifold","title":"Manifolds.christoffel_symbols_second_jacobian","text":"christoffel_symbols_second_jacobian(\n M::AbstractManifold,\n p,\n B::AbstractBasis;\n backend::AbstractDiffBackend = default_differential_backend(),\n)\n\nGet partial derivatives of the Christoffel symbols of the second kind for manifold M at p with respect to the coordinates of B, i.e.\n\nfrac p^l Γ^k_ij = Γ^k_ijl\n\nThe dimensions of the resulting multi-dimensional array are ordered (ijkl).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/connection.html#Manifolds.connection-Tuple{AbstractManifold}","page":"Connection manifold","title":"Manifolds.connection","text":"connection(M::AbstractManifold)\n\nGet the connection (an object of a subtype of AbstractAffineConnection) of AbstractManifold M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/connection.html#Manifolds.connection-Tuple{ConnectionManifold}","page":"Connection manifold","title":"Manifolds.connection","text":"connection(M::ConnectionManifold)\n\nReturn the connection associated with ConnectionManifold M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/connection.html#Manifolds.gaussian_curvature-Tuple{AbstractManifold, Any, AbstractBasis}","page":"Connection manifold","title":"Manifolds.gaussian_curvature","text":"gaussian_curvature(M::AbstractManifold, p, B::AbstractBasis; backend::AbstractDiffBackend = default_differential_backend())\n\nCompute the Gaussian curvature of the manifold M at the point p using basis B. This is equal to half of the scalar Ricci curvature, see ricci_curvature.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/connection.html#Manifolds.is_default_connection-Tuple{AbstractManifold, AbstractAffineConnection}","page":"Connection manifold","title":"Manifolds.is_default_connection","text":"is_default_connection(M::AbstractManifold, G::AbstractAffineConnection)\n\nreturns whether an AbstractAffineConnection is the default metric on the manifold M or not. This can be set by defining this function, or setting the IsDefaultConnection trait for an AbstractDecoratorManifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/connection.html#Manifolds.ricci_tensor-Tuple{AbstractManifold, Any, AbstractBasis}","page":"Connection manifold","title":"Manifolds.ricci_tensor","text":"ricci_tensor(M::AbstractManifold, p, B::AbstractBasis; backend::AbstractDiffBackend = default_differential_backend())\n\nCompute the Ricci tensor, also known as the Ricci curvature tensor, of the manifold M at the point p using basis B, see https://en.wikipedia.org/wiki/Ricci_curvature#Introduction_and_local_definition.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/connection.html#Manifolds.solve_exp_ode-Tuple{AbstractManifold, Any, Any, Number}","page":"Connection manifold","title":"Manifolds.solve_exp_ode","text":"solve_exp_ode(\n M::AbstractConnectionManifold,\n p,\n X,\n t::Number,\n B::AbstractBasis;\n backend::AbstractDiffBackend = default_differential_backend(),\n solver = AutoVern9(Rodas5()),\n kwargs...,\n)\n\nApproximate the exponential map on the manifold by evaluating the ODE descripting the geodesic at 1, assuming the default connection of the given manifold by solving the ordinary differential equation\n\nfracd^2dt^2 p^k + Γ^k_ij fracddt p_i fracddt p_j = 0\n\nwhere Γ^k_ij are the Christoffel symbols of the second kind, and the Einstein summation convention is assumed. The argument solver follows the OrdinaryDiffEq conventions. kwargs... specify keyword arguments that will be passed to OrdinaryDiffEq.solve.\n\nCurrently, the numerical integration is only accurate when using a single coordinate chart that covers the entire manifold. This excludes coordinates in an embedded space.\n\nnote: Note\nThis function only works when OrdinaryDiffEq.jl is loaded withusing OrdinaryDiffEq\n\n\n\n\n\n","category":"method"},{"location":"manifolds/connection.html#ManifoldsBase.riemann_tensor-Tuple{AbstractManifold, Any, AbstractBasis}","page":"Connection manifold","title":"ManifoldsBase.riemann_tensor","text":"riemann_tensor(M::AbstractManifold, p, B::AbstractBasis; backend::AbstractDiffBackend=default_differential_backend())\n\nCompute the Riemann tensor R^l_ijk, also known as the Riemann curvature tensor, at the point p in local coordinates defined by B. The dimensions of the resulting multi-dimensional array are ordered (lijk).\n\nThe function uses the coordinate expression involving the second Christoffel symbol, see https://en.wikipedia.org/wiki/Riemann_curvature_tensor#Coordinate_expression for details.\n\nSee also\n\nchristoffel_symbols_second, christoffel_symbols_second_jacobian\n\n\n\n\n\n","category":"method"},{"location":"manifolds/connection.html#connections_charts","page":"Connection manifold","title":"Charts and bases of vector spaces","text":"","category":"section"},{"location":"manifolds/connection.html","page":"Connection manifold","title":"Connection manifold","text":"All connection-related functions take a basis of a vector space as one of the arguments. This is needed because generally there is no way to define these functions without referencing a basis. In some cases there is no need to be explicit about this basis, and then for example a DefaultOrthonormalBasis object can be used. In cases where being explicit about these bases is needed, for example when using multiple charts, a basis can be specified, for example using induced_basis.","category":"page"},{"location":"index.html#Manifolds","page":"Home","title":"Manifolds","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"Manifolds.Manifolds","category":"page"},{"location":"index.html#Manifolds.Manifolds","page":"Home","title":"Manifolds.Manifolds","text":"Manifolds.jl provides a library of manifolds aiming for an easy-to-use and fast implementation.\n\n\n\n\n\n","category":"module"},{"location":"index.html","page":"Home","title":"Home","text":"The implemented manifolds are accompanied by their mathematical formulae.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"The manifolds are implemented using the interface for manifolds given in ManifoldsBase.jl. You can use that interface to implement your own software on manifolds, such that all manifolds based on that interface can be used within your code.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"For more information, see the About section.","category":"page"},{"location":"index.html#Getting-started","page":"Home","title":"Getting started","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"To install the package just type","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"using Pkg; Pkg.add(\"Manifolds\")","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"Then you can directly start, for example to stop half way from the north pole on the Sphere to a point on the the equator, you can generate the shortest_geodesic. It internally employs log and exp.","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"using Manifolds\nM = Sphere(2)\nγ = shortest_geodesic(M, [0., 0., 1.], [0., 1., 0.])\nγ(0.5)","category":"page"},{"location":"index.html#Citation","page":"Home","title":"Citation","text":"","category":"section"},{"location":"index.html","page":"Home","title":"Home","text":"If you use Manifolds.jl in your work, please cite the following","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"@online{2106.08777,\n Author = {Seth D. Axen and Mateusz Baran and Ronny Bergmann and Krzysztof Rzecki},\n Title = {Manifolds.jl: An Extensible Julia Framework for Data Analysis on Manifolds},\n Year = {2021},\n Eprint = {2106.08777},\n Eprinttype = {arXiv},\n}","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"To refer to a certain version we recommend to also cite for example","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"@software{manifoldsjl-zenodo-mostrecent,\n Author = {Seth D. Axen and Mateusz Baran and Ronny Bergmann},\n Title = {Manifolds.jl},\n Doi = {10.5281/ZENODO.4292129},\n Url = {https://zenodo.org/record/4292129},\n Publisher = {Zenodo},\n Year = {2021},\n Copyright = {MIT License}\n}","category":"page"},{"location":"index.html","page":"Home","title":"Home","text":"for the most recent version or a corresponding version specific DOI, see the list of all versions. Note that both citations are in BibLaTeX format.","category":"page"},{"location":"manifolds/lorentz.html#Lorentzian-Manifold","page":"Lorentzian manifold","title":"Lorentzian Manifold","text":"","category":"section"},{"location":"manifolds/lorentz.html","page":"Lorentzian manifold","title":"Lorentzian manifold","text":"The Lorentz manifold is a pseudo-Riemannian manifold. It is named after the Dutch physicist Hendrik Lorentz (1853–1928). The default LorentzMetric is the MinkowskiMetric named after the German mathematician Hermann Minkowski (1864–1909).","category":"page"},{"location":"manifolds/lorentz.html","page":"Lorentzian manifold","title":"Lorentzian manifold","text":"Within Manifolds.jl it is used as the embedding of the Hyperbolic space.","category":"page"},{"location":"manifolds/lorentz.html","page":"Lorentzian manifold","title":"Lorentzian manifold","text":"Modules = [Manifolds]\nPages = [\"Lorentz.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/lorentz.html#Manifolds.Lorentz","page":"Lorentzian manifold","title":"Manifolds.Lorentz","text":"Lorentz{N} = MetricManifold{Euclidean{N,ℝ},LorentzMetric}\n\nThe Lorentz manifold (or Lorentzian) is a pseudo-Riemannian manifold.\n\nConstructor\n\nLorentz(n[, metric=MinkowskiMetric()])\n\nGenerate the Lorentz manifold of dimension n with the LorentzMetric m, which is by default set to the MinkowskiMetric.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/lorentz.html#Manifolds.LorentzMetric","page":"Lorentzian manifold","title":"Manifolds.LorentzMetric","text":"LorentzMetric <: AbstractMetric\n\nAbstract type for Lorentz metrics, which have a single time dimension. These metrics assume the spacelike convention with the time dimension being last, giving the signature (+++-).\n\n\n\n\n\n","category":"type"},{"location":"manifolds/lorentz.html#Manifolds.MinkowskiMetric","page":"Lorentzian manifold","title":"Manifolds.MinkowskiMetric","text":"MinkowskiMetric <: LorentzMetric\n\nAs a special metric of signature (+++-), i.e. a LorentzMetric, see minkowski_metric for the formula.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/lorentz.html#Manifolds.minkowski_metric-Tuple{Any, Any}","page":"Lorentzian manifold","title":"Manifolds.minkowski_metric","text":"minkowski_metric(a,b)\n\nCompute the minkowski metric on mathbb R^n is given by\n\nab_mathrmM = -a_nb_n +\ndisplaystylesum_k=1^n-1 a_kb_k\n\n\n\n\n\n","category":"method"},{"location":"misc/internals.html#Internal-documentation","page":"Internals","title":"Internal documentation","text":"","category":"section"},{"location":"misc/internals.html","page":"Internals","title":"Internals","text":"This page documents the internal types and methods of Manifolds.jl's that might be of use for writing your own manifold.","category":"page"},{"location":"misc/internals.html#Functions","page":"Internals","title":"Functions","text":"","category":"section"},{"location":"misc/internals.html","page":"Internals","title":"Internals","text":"Manifolds.eigen_safe\nManifolds.isnormal\nManifolds.log_safe\nManifolds.log_safe!\nManifolds.mul!_safe\nManifolds.nzsign\nManifolds.realify\nManifolds.realify!\nManifolds.select_from_tuple\nManifolds.symmetrize\nManifolds.symmetrize!\nManifolds.unrealify!\nManifolds.usinc\nManifolds.usinc_from_cos\nManifolds.vec2skew!\nManifolds.ziptuples","category":"page"},{"location":"misc/internals.html#Manifolds.eigen_safe","page":"Internals","title":"Manifolds.eigen_safe","text":"eigen_safe(x)\n\nCompute the eigendecomposition of x. If x is a StaticMatrix, it is converted to a Matrix before the decomposition.\n\n\n\n\n\n","category":"function"},{"location":"misc/internals.html#Manifolds.isnormal","page":"Internals","title":"Manifolds.isnormal","text":"isnormal(x; kwargs...) -> Bool\n\nCheck if the matrix or number x is normal, that is, if it commutes with its adjoint:\n\nx x^mathrmH = x^mathrmH x\n\nBy default, this is an equality check. Provide kwargs for isapprox to perform an approximate check.\n\n\n\n\n\n","category":"function"},{"location":"misc/internals.html#Manifolds.log_safe","page":"Internals","title":"Manifolds.log_safe","text":"log_safe(x)\n\nCompute the matrix logarithm of x. If x is a StaticMatrix, it is converted to a Matrix before computing the log.\n\n\n\n\n\n","category":"function"},{"location":"misc/internals.html#Manifolds.log_safe!","page":"Internals","title":"Manifolds.log_safe!","text":"log_safe!(y, x)\n\nCompute the matrix logarithm of x. If the eltype of y is real, then the imaginary part of x is ignored, and a DomainError is raised if real(x) has no real logarithm.\n\n\n\n\n\n","category":"function"},{"location":"misc/internals.html#Manifolds.mul!_safe","page":"Internals","title":"Manifolds.mul!_safe","text":"mul!_safe(Y, A, B) -> Y\n\nCall mul! safely, that is, A and/or B are permitted to alias with Y.\n\n\n\n\n\n","category":"function"},{"location":"misc/internals.html#Manifolds.nzsign","page":"Internals","title":"Manifolds.nzsign","text":"nzsign(z[, absz])\n\nCompute a modified sign(z) that is always nonzero, i.e. where\n\noperatorname(nzsign)(z) = begincases\n 1 textif z = 0\n fraczz textotherwise\nendcases\n\n\n\n\n\n","category":"function"},{"location":"misc/internals.html#Manifolds.realify","page":"Internals","title":"Manifolds.realify","text":"realify(X::AbstractMatrix{T𝔽}, 𝔽::AbstractNumbers) -> Y::AbstractMatrix{<:Real}\n\nGiven a matrix X 𝔽^n n, compute Y ℝ^m m, where m = n operatornamedim_𝔽, and operatornamedim_𝔽 is the real_dimension of the number field 𝔽, using the map ϕ colon X Y, that preserves the matrix product, so that for all CD 𝔽^n n,\n\nϕ(C) ϕ(D) = ϕ(CD)\n\nSee realify! for an in-place version, and unrealify! to compute the inverse of ϕ.\n\n\n\n\n\n","category":"function"},{"location":"misc/internals.html#Manifolds.realify!","page":"Internals","title":"Manifolds.realify!","text":"realify!(Y::AbstractMatrix{<:Real}, X::AbstractMatrix{T𝔽}, 𝔽::AbstractNumbers)\n\nIn-place version of realify.\n\n\n\n\n\nrealify!(Y::AbstractMatrix{<:Real}, X::AbstractMatrix{<:Complex}, ::typeof(ℂ))\n\nGiven a complex matrix X = A + iB ℂ^n n, compute its realified matrix Y ℝ^2n 2n, written where\n\nY = beginpmatrixA -B B A endpmatrix\n\n\n\n\n\n","category":"function"},{"location":"misc/internals.html#Manifolds.select_from_tuple","page":"Internals","title":"Manifolds.select_from_tuple","text":"select_from_tuple(t::NTuple{N, Any}, positions::Val{P})\n\nSelects elements of tuple t at positions specified by the second argument. For example select_from_tuple((\"a\", \"b\", \"c\"), Val((3, 1, 1))) returns (\"c\", \"a\", \"a\").\n\n\n\n\n\n","category":"function"},{"location":"misc/internals.html#Manifolds.symmetrize","page":"Internals","title":"Manifolds.symmetrize","text":"symmetrize(X)\n\nGiven a quare matrix X compute 1/2 .* (X' + X).\n\n\n\n\n\n","category":"function"},{"location":"misc/internals.html#Manifolds.symmetrize!","page":"Internals","title":"Manifolds.symmetrize!","text":"symmetrize!(Y, X)\n\nGiven a quare matrix X compute 1/2 .* (X' + X) in place of Y\n\n\n\n\n\n","category":"function"},{"location":"misc/internals.html#Manifolds.unrealify!","page":"Internals","title":"Manifolds.unrealify!","text":"unrealify!(X::AbstractMatrix{T𝔽}, Y::AbstractMatrix{<:Real}, 𝔽::AbstractNumbers[, n])\n\nGiven a real matrix Y ℝ^m m, where m = n operatornamedim_𝔽, and operatornamedim_𝔽 is the real_dimension of the number field 𝔽, compute in-place its equivalent matrix X 𝔽^n n. Note that this function does not check that Y has a valid structure to be un-realified.\n\nSee realify! for the inverse of this function.\n\n\n\n\n\n","category":"function"},{"location":"misc/internals.html#Manifolds.usinc","page":"Internals","title":"Manifolds.usinc","text":"usinc(θ::Real)\n\nUnnormalized version of sinc function, i.e. operatornameusinc(θ) = fracsin(θ)θ. This is equivalent to sinc(θ/π).\n\n\n\n\n\n","category":"function"},{"location":"misc/internals.html#Manifolds.usinc_from_cos","page":"Internals","title":"Manifolds.usinc_from_cos","text":"usinc_from_cos(x::Real)\n\nUnnormalized version of sinc function, i.e. operatornameusinc(θ) = fracsin(θ)θ, computed from x = cos(θ).\n\n\n\n\n\n","category":"function"},{"location":"misc/internals.html#Manifolds.vec2skew!","page":"Internals","title":"Manifolds.vec2skew!","text":"vec2skew!(X, v, k)\n\ncreate a skew symmetric matrix inplace in X of size ktimes k from a vector v, for example for v=[1,2,3] and k=3 this yields\n\n[ 0 1 2;\n -1 0 3;\n -2 -3 0\n]\n\n\n\n\n\n","category":"function"},{"location":"misc/internals.html#Manifolds.ziptuples","page":"Internals","title":"Manifolds.ziptuples","text":"ziptuples(a, b[, c[, d[, e]]])\n\nZips tuples a, b, and remaining in a fast, type-stable way. If they have different lengths, the result is trimmed to the length of the shorter tuple.\n\n\n\n\n\n","category":"function"},{"location":"misc/internals.html#Types-in-Extensions","page":"Internals","title":"Types in Extensions","text":"","category":"section"},{"location":"misc/internals.html","page":"Internals","title":"Internals","text":"Modules = [Manifolds]\nPages = [\"../ext/ManifoldsOrdinaryDiffEqDiffEqCallbacksExt.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/sphere.html#SphereSection","page":"Sphere","title":"Sphere and unit norm arrays","text":"","category":"section"},{"location":"manifolds/sphere.html","page":"Sphere","title":"Sphere","text":"AbstractSphere","category":"page"},{"location":"manifolds/sphere.html#Manifolds.AbstractSphere","page":"Sphere","title":"Manifolds.AbstractSphere","text":"AbstractSphere{𝔽} <: AbstractDecoratorManifold{𝔽}\n\nAn abstract type to represent a unit sphere that is represented isometrically in the embedding.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/sphere.html","page":"Sphere","title":"Sphere","text":"The classical sphere, i.e. unit norm (real- or complex-valued) vectors can be generated as usual: to create the 2-dimensional sphere (in ℝ^3), use Sphere(2) and Sphere(2,ℂ), respectively.","category":"page"},{"location":"manifolds/sphere.html","page":"Sphere","title":"Sphere","text":"Sphere","category":"page"},{"location":"manifolds/sphere.html#Manifolds.Sphere","page":"Sphere","title":"Manifolds.Sphere","text":"Sphere{n,𝔽} <: AbstractSphere{𝔽}\n\nThe (unit) sphere manifold 𝕊^n is the set of all unit norm vectors in 𝔽^n+1. The sphere is represented in the embedding, i.e.\n\n𝕊^n = bigl p in 𝔽^n+1 big lVert p rVert = 1 bigr\n\nwhere 𝔽inℝℂℍ. Note that compared to the ArraySphere, here the argument n of the manifold is the dimension of the manifold, i.e. 𝕊^n 𝔽^n+1, nin ℕ.\n\nThe tangent space at point p is given by\n\nT_p𝕊^n = bigl X 𝔽^n+1 Re(pX) = 0 bigr \n\nwhere 𝔽inℝℂℍ and cdotcdot denotes the inner product in the embedding 𝔽^n+1.\n\nFor 𝔽=ℂ, the manifold is the complex sphere, written ℂ𝕊^n, embedded in ℂ^n+1. ℂ𝕊^n is the complexification of the real sphere 𝕊^2n+1. Likewise, the quaternionic sphere ℍ𝕊^n is the quaternionification of the real sphere 𝕊^4n+3. Consequently, ℂ𝕊^0 is equivalent to 𝕊^1 and Circle, while ℂ𝕊^1 and ℍ𝕊^0 are equivalent to 𝕊^3, though with different default representations.\n\nThis manifold is modeled as a special case of the more general case, i.e. as an embedded manifold to the Euclidean, and several functions like the inner product and the zero_vector are inherited from the embedding.\n\nConstructor\n\nSphere(n[, field=ℝ])\n\nGenerate the (real-valued) sphere 𝕊^n ℝ^n+1, where field can also be used to generate the complex- and quaternionic-valued sphere.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/sphere.html","page":"Sphere","title":"Sphere","text":"For the higher-dimensional arrays, for example unit (Frobenius) norm matrices, the manifold is generated using the size of the matrix. To create the unit sphere of 32 real-valued matrices, write ArraySphere(3,2) and the complex case is done – as for the Euclidean case – with an keyword argument ArraySphere(3,2; field = ℂ). This case also covers the classical sphere as a special case, but you specify the size of the vectors/embedding instead: The 2-sphere can here be generated ArraySphere(3).","category":"page"},{"location":"manifolds/sphere.html","page":"Sphere","title":"Sphere","text":"ArraySphere","category":"page"},{"location":"manifolds/sphere.html#Manifolds.ArraySphere","page":"Sphere","title":"Manifolds.ArraySphere","text":"ArraySphere{T<:Tuple,𝔽} <: AbstractSphere{𝔽}\n\nThe (unit) sphere manifold 𝕊^n₁n₂nᵢ is the set of all unit (Frobenius) norm elements of 𝔽^n₁n₂nᵢ, where 𝔽\\in{ℝ,ℂ,ℍ}. The generalized sphere is represented in the embedding, and supports arbitrary sized arrays or in other words arbitrary tensors of unit norm. The set formally reads\n\n𝕊^n_1 n_2 n_i = bigl p in 𝔽^n_1 n_2 n_i big lVert p rVert = 1 bigr\n\nwhere 𝔽inℝℂℍ. Setting i=1 and 𝔽=ℝ this simplifies to unit vectors in ℝ^n, see Sphere for this special case. Note that compared to this classical case, the argument for the generalized case here is given by the dimension of the embedding. This means that Sphere(2) and ArraySphere(3) are the same manifold.\n\nThe tangent space at point p is given by\n\nT_p 𝕊^n_1 n_2 n_i = bigl X 𝔽^n_1 n_2 n_i Re(pX) = 0 bigr \n\nwhere 𝔽inℝℂℍ and cdotcdot denotes the (Frobenius) inner product in the embedding 𝔽^n_1 n_2 n_i.\n\nThis manifold is modeled as an embedded manifold to the Euclidean, i.e. several functions like the inner product and the zero_vector are inherited from the embedding.\n\nConstructor\n\nArraySphere(n₁,n₂,...,nᵢ; field=ℝ)\n\nGenerate sphere in 𝔽^n_1 n_2 n_i, where 𝔽 defaults to the real-valued case ℝ.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/sphere.html","page":"Sphere","title":"Sphere","text":"There is also one atlas available on the sphere.","category":"page"},{"location":"manifolds/sphere.html","page":"Sphere","title":"Sphere","text":"Manifolds.StereographicAtlas","category":"page"},{"location":"manifolds/sphere.html#Manifolds.StereographicAtlas","page":"Sphere","title":"Manifolds.StereographicAtlas","text":"StereographicAtlas()\n\nThe stereographic atlas of S^n with two charts: one with the singular point (-1, 0, ..., 0) (called :north) and one with the singular point (1, 0, ..., 0) (called :south).\n\n\n\n\n\n","category":"type"},{"location":"manifolds/sphere.html#Functions-on-unit-spheres","page":"Sphere","title":"Functions on unit spheres","text":"","category":"section"},{"location":"manifolds/sphere.html","page":"Sphere","title":"Sphere","text":"Modules = [Manifolds]\nPages = [\"manifolds/Sphere.jl\"]\nOrder = [:function]","category":"page"},{"location":"manifolds/sphere.html#Base.exp-Tuple{AbstractSphere, Vararg{Any}}","page":"Sphere","title":"Base.exp","text":"exp(M::AbstractSphere, p, X)\n\nCompute the exponential map from p in the tangent direction X on the AbstractSphere M by following the great arc eminating from p in direction X.\n\nexp_p X = cos(lVert X rVert_p)p + sin(lVert X rVert_p)fracXlVert X rVert_p\n\nwhere lVert X rVert_p is the norm on the tangent space at p of the AbstractSphere M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/sphere.html#Base.log-Tuple{AbstractSphere, Vararg{Any}}","page":"Sphere","title":"Base.log","text":"log(M::AbstractSphere, p, q)\n\nCompute the logarithmic map on the AbstractSphere M, i.e. the tangent vector, whose geodesic starting from p reaches q after time 1. The formula reads for x -y\n\nlog_p q = d_𝕊(pq) fracq-Re(pq) plVert q-Re(pq) p rVert_2\n\nand a deterministic choice from the set of tangent vectors is returned if x=-y, i.e. for opposite points.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/sphere.html#Manifolds.local_metric-Union{Tuple{n}, Tuple{Sphere{n, ℝ}, Any, DefaultOrthonormalBasis}} where n","page":"Sphere","title":"Manifolds.local_metric","text":"local_metric(M::Sphere{n}, p, ::DefaultOrthonormalBasis)\n\nreturn the local representation of the metric in a DefaultOrthonormalBasis, namely the diagonal matrix of size nn with ones on the diagonal, since the metric is obtained from the embedding by restriction to the tangent space T_pmathcal M at p.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/sphere.html#Manifolds.manifold_volume-Tuple{AbstractSphere{ℝ}}","page":"Sphere","title":"Manifolds.manifold_volume","text":"manifold_volume(M::AbstractSphere{ℝ})\n\nVolume of the n-dimensional Sphere M. The formula reads\n\noperatornameVol(𝕊^n) = frac2pi^(n+1)2Γ((n+1)2)\n\nwhere Γ denotes the Gamma function.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/sphere.html#Manifolds.uniform_distribution-Union{Tuple{n}, Tuple{Sphere{n, ℝ}, Any}} where n","page":"Sphere","title":"Manifolds.uniform_distribution","text":"uniform_distribution(M::Sphere{n,ℝ}, p) where {n}\n\nUniform distribution on given Sphere M. Generated points will be of similar type as p.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/sphere.html#Manifolds.volume_density-Tuple{AbstractSphere{ℝ}, Any, Any}","page":"Sphere","title":"Manifolds.volume_density","text":"volume_density(M::AbstractSphere{ℝ}, p, X)\n\nCompute volume density function of a sphere, i.e. determinant of the differential of exponential map exp(M, p, X). The formula reads (sin(lVert XrVert)lVert XrVert)^(n-1) where n is the dimension of M. It is derived from Eq. (4.1) in [CLLD22].\n\n\n\n\n\n","category":"method"},{"location":"manifolds/sphere.html#ManifoldsBase.Weingarten-Tuple{Sphere, Any, Any, Any}","page":"Sphere","title":"ManifoldsBase.Weingarten","text":"Y = Weingarten(M::Sphere, p, X, V)\nWeingarten!(M::Sphere, Y, p, X, V)\n\nCompute the Weingarten map mathcal W_p at p on the Sphere M with respect to the tangent vector X in T_pmathcal M and the normal vector V in N_pmathcal M.\n\nThe formula is due to [AMT13] given by\n\nmathcal W_p(XV) = -Xp^mathrmTV\n\n\n\n\n\n","category":"method"},{"location":"manifolds/sphere.html#ManifoldsBase.check_point-Tuple{AbstractSphere, Any}","page":"Sphere","title":"ManifoldsBase.check_point","text":"check_point(M::AbstractSphere, p; kwargs...)\n\nCheck whether p is a valid point on the AbstractSphere M, i.e. is a point in the embedding of unit length. The tolerance for the last test can be set using the kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/sphere.html#ManifoldsBase.check_vector-Tuple{AbstractSphere, Any, Any}","page":"Sphere","title":"ManifoldsBase.check_vector","text":"check_vector(M::AbstractSphere, p, X; kwargs... )\n\nCheck whether X is a tangent vector to p on the AbstractSphere M, i.e. after check_point(M,p), X has to be of same dimension as p and orthogonal to p. The tolerance for the last test can be set using the kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/sphere.html#ManifoldsBase.distance-Tuple{AbstractSphere, Any, Any}","page":"Sphere","title":"ManifoldsBase.distance","text":"distance(M::AbstractSphere, p, q)\n\nCompute the geodesic distance betweeen p and q on the AbstractSphere M. The formula is given by the (shorter) great arc length on the (or a) great circle both p and q lie on.\n\nd_𝕊(pq) = arccos(Re(pq))\n\n\n\n\n\n","category":"method"},{"location":"manifolds/sphere.html#ManifoldsBase.get_coordinates-Tuple{AbstractSphere{ℝ}, Any, Any, DefaultOrthonormalBasis}","page":"Sphere","title":"ManifoldsBase.get_coordinates","text":"get_coordinates(M::AbstractSphere{ℝ}, p, X, B::DefaultOrthonormalBasis)\n\nRepresent the tangent vector X at point p from the AbstractSphere M in an orthonormal basis by rotating the hyperplane containing X to a hyperplane whose normal is the x-axis.\n\nGiven q = p λ + x, where λ = operatornamesgn(x p), and _mathrmF denotes the Frobenius inner product, the formula for Y is\n\nbeginpmatrix0 Yendpmatrix = X - qfrac2 q X_mathrmFq q_mathrmF\n\n\n\n\n\n","category":"method"},{"location":"manifolds/sphere.html#ManifoldsBase.get_vector-Tuple{AbstractSphere{ℝ}, Any, Any, DefaultOrthonormalBasis}","page":"Sphere","title":"ManifoldsBase.get_vector","text":"get_vector(M::AbstractSphere{ℝ}, p, X, B::DefaultOrthonormalBasis)\n\nConvert a one-dimensional vector of coefficients X in the basis B of the tangent space at p on the AbstractSphere M to a tangent vector Y at p by rotating the hyperplane containing X, whose normal is the x-axis, to the hyperplane whose normal is p.\n\nGiven q = p λ + x, where λ = operatornamesgn(x p), and _mathrmF denotes the Frobenius inner product, the formula for Y is\n\nY = X - qfrac2 leftlangle q beginpmatrix0 Xendpmatrixrightrangle_mathrmFq q_mathrmF\n\n\n\n\n\n","category":"method"},{"location":"manifolds/sphere.html#ManifoldsBase.injectivity_radius-Tuple{AbstractSphere}","page":"Sphere","title":"ManifoldsBase.injectivity_radius","text":"injectivity_radius(M::AbstractSphere[, p])\n\nReturn the injectivity radius for the AbstractSphere M, which is globally π.\n\ninjectivity_radius(M::Sphere, x, ::ProjectionRetraction)\n\nReturn the injectivity radius for the ProjectionRetraction on the AbstractSphere, which is globally fracπ2.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/sphere.html#ManifoldsBase.inverse_retract-Tuple{AbstractSphere, Any, Any, ProjectionInverseRetraction}","page":"Sphere","title":"ManifoldsBase.inverse_retract","text":"inverse_retract(M::AbstractSphere, p, q, ::ProjectionInverseRetraction)\n\nCompute the inverse of the projection based retraction on the AbstractSphere M, i.e. rearranging p+X = qlVert p+XrVert_2 yields since Re(pX) = 0 and when d_𝕊^2(pq) fracπ2 that\n\noperatornameretr_p^-1(q) = fracqRe(p q) - p\n\n\n\n\n\n","category":"method"},{"location":"manifolds/sphere.html#ManifoldsBase.is_flat-Tuple{AbstractSphere}","page":"Sphere","title":"ManifoldsBase.is_flat","text":"is_flat(M::AbstractSphere)\n\nReturn true if AbstractSphere is of dimension 1 and false otherwise.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/sphere.html#ManifoldsBase.manifold_dimension-Tuple{AbstractSphere}","page":"Sphere","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::AbstractSphere)\n\nReturn the dimension of the AbstractSphere M, respectively i.e. the dimension of the embedding -1.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/sphere.html#ManifoldsBase.parallel_transport_to-Tuple{AbstractSphere, Vararg{Any, 4}}","page":"Sphere","title":"ManifoldsBase.parallel_transport_to","text":"parallel_transport_to(M::AbstractSphere, p, X, q)\n\nCompute the parallel transport on the Sphere of the tangent vector X at p to q, provided, the geodesic between p and q is unique. The formula reads\n\nP_pq(X) = X - fracRe(log_p qX_p)d^2_𝕊(pq)\nbigl(log_p q + log_q p bigr)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/sphere.html#ManifoldsBase.project-Tuple{AbstractSphere, Any, Any}","page":"Sphere","title":"ManifoldsBase.project","text":"project(M::AbstractSphere, p, X)\n\nProject the point X onto the tangent space at p on the Sphere M.\n\noperatornameproj_p(X) = X - Re(p X)p\n\n\n\n\n\n","category":"method"},{"location":"manifolds/sphere.html#ManifoldsBase.project-Tuple{AbstractSphere, Any}","page":"Sphere","title":"ManifoldsBase.project","text":"project(M::AbstractSphere, p)\n\nProject the point p from the embedding onto the Sphere M.\n\noperatornameproj(p) = fracplVert p rVert\n\nwhere lVertcdotrVert denotes the usual 2-norm for vectors if m=1 and the Frobenius norm for the case m1.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/sphere.html#ManifoldsBase.representation_size-Union{Tuple{ArraySphere{N}}, Tuple{N}} where N","page":"Sphere","title":"ManifoldsBase.representation_size","text":"representation_size(M::AbstractSphere)\n\nReturn the size points on the AbstractSphere M are represented as, i.e., the representation size of the embedding.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/sphere.html#ManifoldsBase.retract-Tuple{AbstractSphere, Any, Any, ProjectionRetraction}","page":"Sphere","title":"ManifoldsBase.retract","text":"retract(M::AbstractSphere, p, X, ::ProjectionRetraction)\n\nCompute the retraction that is based on projection, i.e.\n\noperatornameretr_p(X) = fracp+XlVert p+X rVert_2\n\n\n\n\n\n","category":"method"},{"location":"manifolds/sphere.html#ManifoldsBase.riemann_tensor-Tuple{AbstractSphere{ℝ}, Vararg{Any, 4}}","page":"Sphere","title":"ManifoldsBase.riemann_tensor","text":"riemann_tensor(M::AbstractSphere{ℝ}, p, X, Y, Z)\n\nCompute the Riemann tensor R(XY)Z at point p on AbstractSphere M. The formula reads [MF12] (though note that a different convention is used in that paper than in Manifolds.jl):\n\nR(XY)Z = langle Z Y rangle X - langle Z X rangle Y\n\n\n\n\n\n","category":"method"},{"location":"manifolds/sphere.html#Statistics.mean-Tuple{AbstractSphere, Vararg{Any}}","page":"Sphere","title":"Statistics.mean","text":"mean(\n S::AbstractSphere,\n x::AbstractVector,\n [w::AbstractWeights,]\n method = GeodesicInterpolationWithinRadius(π/2);\n kwargs...,\n)\n\nCompute the Riemannian mean of x using GeodesicInterpolationWithinRadius.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/sphere.html#Visualization-on-Sphere{2,ℝ}","page":"Sphere","title":"Visualization on Sphere{2,ℝ}","text":"","category":"section"},{"location":"manifolds/sphere.html","page":"Sphere","title":"Sphere","text":"You can visualize both points and tangent vectors on the sphere.","category":"page"},{"location":"manifolds/sphere.html","page":"Sphere","title":"Sphere","text":"note: Note\nThere seems to be no unified way to draw spheres in the backends of Plots.jl. This recipe currently uses the seriestype wireframe and surface, which does not yet work with the default backend GR.","category":"page"},{"location":"manifolds/sphere.html","page":"Sphere","title":"Sphere","text":"In general you can plot the surface of the hyperboloid either as wireframe (wireframe=true) additionally specifying wires (or wires_x and wires_y) to change the density of the wires and a wireframe_color for their color. The same holds for the plot as a surface (which is false by default) and its surface_resolution (or surface_resolution_lat or surface_resolution_lon) and a surface_color.","category":"page"},{"location":"manifolds/sphere.html","page":"Sphere","title":"Sphere","text":"using Manifolds, Plots\npythonplot()\nM = Sphere(2)\npts = [ [1.0, 0.0, 0.0], [0.0, -1.0, 0.0], [0.0, 0.0, 1.0], [1.0, 0.0, 0.0] ]\nscene = plot(M, pts; wireframe_color=colorant\"#CCCCCC\", markersize=10)","category":"page"},{"location":"manifolds/sphere.html","page":"Sphere","title":"Sphere","text":"which scatters our points. We can also draw connecting geodesics, which here is a geodesic triangle. Here we discretize each geodesic with 100 points along the geodesic. The default value is geodesic_interpolation=-1 which switches to scatter plot of the data.","category":"page"},{"location":"manifolds/sphere.html","page":"Sphere","title":"Sphere","text":"plot!(scene, M, pts; wireframe=false, geodesic_interpolation=100, linewidth=2)","category":"page"},{"location":"manifolds/sphere.html","page":"Sphere","title":"Sphere","text":"And we can also add tangent vectors, for example tangents pointing towards the geometric center of given points.","category":"page"},{"location":"manifolds/sphere.html","page":"Sphere","title":"Sphere","text":"pts2 = [ [1.0, 0.0, 0.0], [0.0, -1.0, 0.0], [0.0, 0.0, 1.0] ]\np3 = 1/sqrt(3) .* [1.0, -1.0, 1.0]\nvecs = log.(Ref(M), pts2, Ref(p3))\nplot!(scene, M, pts2, vecs; wireframe = false, linewidth=1.5)","category":"page"},{"location":"manifolds/sphere.html#Literature","page":"Sphere","title":"Literature","text":"","category":"section"},{"location":"manifolds/sphere.html","page":"Sphere","title":"Sphere","text":"
    [AMT13]
    \n
    \n\n
    [CLLD22]
    \n
    \n
    E. Chevallier, D. Li, Y. Lu and D. B. Dunson. Exponential-wrapped distributions on symmetric spaces. ArXiv Preprint (2022).
    \n
    [MF12]
    \n
    \n
    P. Muralidharan and P. T. Fletcher. Sasaki metrics for analysis of longitudinal data on manifolds. In: 2012 IEEE Conference on Computer Vision and Pattern Recognition (2012).
    \n
    \n
    ","category":"page"},{"location":"manifolds/shapespace.html#Shape-spaces","page":"Shape spaces","title":"Shape spaces","text":"","category":"section"},{"location":"manifolds/shapespace.html","page":"Shape spaces","title":"Shape spaces","text":"Shape spaces are spaces of k points in mathbbR^n up to simultaneous action of a group on all points. The most commonly encountered are Kendall's pre-shape and shape spaces. In the case of the Kendall's pre-shape spaces the action is translation and scaling. In the case of the Kendall's shape spaces the action is translation, scaling and rotation.","category":"page"},{"location":"manifolds/shapespace.html","page":"Shape spaces","title":"Shape spaces","text":"using Manifolds, Plots\n\nM = KendallsShapeSpace(2, 3)\n# two random point on the shape space\np = [\n 0.4385117672460505 -0.6877826444042382 0.24927087715818771\n -0.3830259932279294 0.35347460720654283 0.029551386021386548\n]\nq = [\n -0.42693314765896473 -0.3268567431952937 0.7537898908542584\n 0.3054740561061169 -0.18962848284149897 -0.11584557326461796\n]\n# let's plot them as triples of points on a plane\nfig = scatter(p[1,:], p[2,:], label=\"p\", aspect_ratio=:equal)\nscatter!(fig, q[1,:], q[2,:], label=\"q\")\n\n# aligning q to p\nA = get_orbit_action(M)\na = optimal_alignment(A, p, q)\nrot_q = apply(A, a, q)\nscatter!(fig, rot_q[1,:], rot_q[2,:], label=\"q aligned to p\")","category":"page"},{"location":"manifolds/shapespace.html","page":"Shape spaces","title":"Shape spaces","text":"A more extensive usage example is available in the hand_gestures.jl tutorial.","category":"page"},{"location":"manifolds/shapespace.html","page":"Shape spaces","title":"Shape spaces","text":"Modules = [Manifolds, ManifoldsBase]\nPages = [\"manifolds/KendallsPreShapeSpace.jl\"]\nOrder = [:type]","category":"page"},{"location":"manifolds/shapespace.html#Manifolds.KendallsPreShapeSpace","page":"Shape spaces","title":"Manifolds.KendallsPreShapeSpace","text":"KendallsPreShapeSpace{n,k} <: AbstractSphere{ℝ}\n\nKendall's pre-shape space of k landmarks in ℝ^n represented by n×k matrices. In each row the sum of elements of a matrix is equal to 0. The Frobenius norm of the matrix is equal to 1 [Ken84][Ken89].\n\nThe space can be interpreted as tuples of k points in ℝ^n up to simultaneous translation and scaling of all points, so this can be thought of as a quotient manifold.\n\nConstructor\n\nKendallsPreShapeSpace(n::Int, k::Int)\n\nSee also\n\nKendallsShapeSpace, esp. for the references\n\n\n\n\n\n","category":"type"},{"location":"manifolds/shapespace.html","page":"Shape spaces","title":"Shape spaces","text":"Modules = [Manifolds, ManifoldsBase]\nPages = [\"manifolds/KendallsShapeSpace.jl\"]\nOrder = [:type]","category":"page"},{"location":"manifolds/shapespace.html#Manifolds.KendallsShapeSpace","page":"Shape spaces","title":"Manifolds.KendallsShapeSpace","text":"KendallsShapeSpace{n,k} <: AbstractDecoratorManifold{ℝ}\n\nKendall's shape space, defined as quotient of a KendallsPreShapeSpace (represented by n×k matrices) by the action ColumnwiseMultiplicationAction.\n\nThe space can be interpreted as tuples of k points in ℝ^n up to simultaneous translation and scaling and rotation of all points [Ken84][Ken89].\n\nThis manifold possesses the IsQuotientManifold trait.\n\nConstructor\n\nKendallsShapeSpace(n::Int, k::Int)\n\nReferences\n\n\n\n\n\n","category":"type"},{"location":"manifolds/shapespace.html#Provided-functions","page":"Shape spaces","title":"Provided functions","text":"","category":"section"},{"location":"manifolds/shapespace.html","page":"Shape spaces","title":"Shape spaces","text":"Modules = [Manifolds, ManifoldsBase]\nPages = [\"manifolds/KendallsPreShapeSpace.jl\"]\nOrder = [:function]","category":"page"},{"location":"manifolds/shapespace.html#ManifoldsBase.check_point-Tuple{KendallsPreShapeSpace, Any}","page":"Shape spaces","title":"ManifoldsBase.check_point","text":"check_point(M::KendallsPreShapeSpace, p; atol=sqrt(max_eps(X, Y)), kwargs...)\n\nCheck whether p is a valid point on KendallsPreShapeSpace, i.e. whether each row has zero mean. Other conditions are checked via embedding in ArraySphere.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/shapespace.html#ManifoldsBase.check_vector-Tuple{KendallsPreShapeSpace, Any, Any}","page":"Shape spaces","title":"ManifoldsBase.check_vector","text":"check_vector(M::KendallsPreShapeSpace, p, X; kwargs... )\n\nCheck whether X is a valid tangent vector on KendallsPreShapeSpace, i.e. whether each row has zero mean. Other conditions are checked via embedding in ArraySphere.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/shapespace.html#ManifoldsBase.get_embedding-Union{Tuple{KendallsPreShapeSpace{N, K}}, Tuple{K}, Tuple{N}} where {N, K}","page":"Shape spaces","title":"ManifoldsBase.get_embedding","text":"get_embedding(M::KendallsPreShapeSpace)\n\nReturn the space KendallsPreShapeSpace M is embedded in, i.e. ArraySphere of matrices of the same shape.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/shapespace.html#ManifoldsBase.manifold_dimension-Union{Tuple{KendallsPreShapeSpace{n, k}}, Tuple{k}, Tuple{n}} where {n, k}","page":"Shape spaces","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::KendallsPreShapeSpace)\n\nReturn the dimension of the KendallsPreShapeSpace manifold M. The dimension is given by n(k - 1) - 1.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/shapespace.html#ManifoldsBase.project-Tuple{KendallsPreShapeSpace, Any, Any}","page":"Shape spaces","title":"ManifoldsBase.project","text":"project(M::KendallsPreShapeSpace, p, X)\n\nProject tangent vector X at point p from the embedding to KendallsPreShapeSpace by selecting the right element from the tangent space to orthogonal section representing the quotient manifold M. See Section 3.7 of [SK16] for details.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/shapespace.html#ManifoldsBase.project-Tuple{KendallsPreShapeSpace, Any}","page":"Shape spaces","title":"ManifoldsBase.project","text":"project(M::KendallsPreShapeSpace, p)\n\nProject point p from the embedding to KendallsPreShapeSpace by selecting the right element from the orthogonal section representing the quotient manifold M. See Section 3.7 of [SK16] for details.\n\nThe method computes the mean of the landmarks and moves them to make their mean zero; afterwards the Frobenius norm of the landmarks (as a matrix) is normalised to fix the scaling.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/shapespace.html","page":"Shape spaces","title":"Shape spaces","text":"Modules = [Manifolds, ManifoldsBase]\nPages = [\"manifolds/KendallsShapeSpace.jl\"]\nOrder = [:function]","category":"page"},{"location":"manifolds/shapespace.html#Base.exp-Tuple{KendallsShapeSpace, Any, Any}","page":"Shape spaces","title":"Base.exp","text":"exp(M::KendallsShapeSpace, p, X)\n\nCompute the exponential map on KendallsShapeSpace M. See [GMTP21] for discussion about its computation.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/shapespace.html#Base.log-Tuple{KendallsShapeSpace, Any, Any}","page":"Shape spaces","title":"Base.log","text":"log(M::KendallsShapeSpace, p, q)\n\nCompute the logarithmic map on KendallsShapeSpace M. See the [exp](@ref exp(::KendallsShapeSpace, ::Any, ::Any)onential map for more details\n\n\n\n\n\n","category":"method"},{"location":"manifolds/shapespace.html#Base.rand-Tuple{KendallsShapeSpace}","page":"Shape spaces","title":"Base.rand","text":"rand(::KendallsShapeSpace; vector_at=nothing)\n\nWhen vector_at is nothing, return a random point x on the KendallsShapeSpace manifold M by generating a random point in the embedding.\n\nWhen vector_at is not nothing, return a random vector from the tangent space with mean zero and standard deviation σ.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/shapespace.html#Manifolds.get_total_space-Union{Tuple{KendallsShapeSpace{n, k}}, Tuple{k}, Tuple{n}} where {n, k}","page":"Shape spaces","title":"Manifolds.get_total_space","text":"get_total_space(::Grassmann{n,k})\n\nReturn the total space of the KendallsShapeSpace manifold, which is the KendallsPreShapeSpace manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/shapespace.html#Manifolds.horizontal_component-Tuple{KendallsShapeSpace, Any, Any}","page":"Shape spaces","title":"Manifolds.horizontal_component","text":"horizontal_component(::KendallsShapeSpace, p, X)\n\nCompute the horizontal component of tangent vector X at p on KendallsShapeSpace M. See [GMTP21], Section 2.3 for details.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/shapespace.html#ManifoldsBase.get_embedding-Union{Tuple{KendallsShapeSpace{N, K}}, Tuple{K}, Tuple{N}} where {N, K}","page":"Shape spaces","title":"ManifoldsBase.get_embedding","text":"get_embedding(M::KendallsShapeSpace)\n\nGet the manifold in which KendallsShapeSpace M is embedded, i.e. KendallsPreShapeSpace of matrices of the same shape.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/shapespace.html#ManifoldsBase.is_flat-Tuple{KendallsShapeSpace}","page":"Shape spaces","title":"ManifoldsBase.is_flat","text":"is_flat(::KendallsShapeSpace)\n\nReturn false. KendallsShapeSpace is not a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/shapespace.html#ManifoldsBase.manifold_dimension-Union{Tuple{KendallsShapeSpace{n, k}}, Tuple{k}, Tuple{n}} where {n, k}","page":"Shape spaces","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::KendallsShapeSpace)\n\nReturn the dimension of the KendallsShapeSpace manifold M. The dimension is given by n(k - 1) - 1 - n(n - 1)2 in the typical case where k geq n+1, and (k + 1)(k - 2) 2 otherwise, unless k is equal to 1, in which case the dimension is 0. See [Ken84] for a discussion of the over-dimensioned case.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/graph.html#Graph-manifold","page":"Graph manifold","title":"Graph manifold","text":"","category":"section"},{"location":"manifolds/graph.html","page":"Graph manifold","title":"Graph manifold","text":"For a given graph G(VE) implemented using Graphs.jl, the GraphManifold models a PowerManifold either on the nodes or edges of the graph, depending on the GraphManifoldType. i.e., it's either a mathcal M^lvert V rvert for the case of a vertex manifold or a mathcal M^lvert E rvert for the case of a edge manifold.","category":"page"},{"location":"manifolds/graph.html#Example","page":"Graph manifold","title":"Example","text":"","category":"section"},{"location":"manifolds/graph.html","page":"Graph manifold","title":"Graph manifold","text":"To make a graph manifold over ℝ^2 with three vertices and two edges, one can use","category":"page"},{"location":"manifolds/graph.html","page":"Graph manifold","title":"Graph manifold","text":"using Manifolds\nusing Graphs\nM = Euclidean(2)\np = [[1., 4.], [2., 5.], [3., 6.]]\nq = [[4., 5.], [6., 7.], [8., 9.]]\nx = [[6., 5.], [4., 3.], [2., 8.]]\nG = SimpleGraph(3)\nadd_edge!(G, 1, 2)\nadd_edge!(G, 2, 3)\nN = GraphManifold(G, M, VertexManifold())","category":"page"},{"location":"manifolds/graph.html","page":"Graph manifold","title":"Graph manifold","text":"It supports all AbstractPowerManifold operations (it is based on NestedPowerRepresentation) and furthermore it is possible to compute a graph logarithm:","category":"page"},{"location":"manifolds/graph.html","page":"Graph manifold","title":"Graph manifold","text":"using Manifolds\nusing Graphs\nM = Euclidean(2)\np = [[1., 4.], [2., 5.], [3., 6.]]\nq = [[4., 5.], [6., 7.], [8., 9.]]\nx = [[6., 5.], [4., 3.], [2., 8.]]\nG = SimpleGraph(3)\nadd_edge!(G, 1, 2)\nadd_edge!(G, 2, 3)\nN = GraphManifold(G, M, VertexManifold())","category":"page"},{"location":"manifolds/graph.html","page":"Graph manifold","title":"Graph manifold","text":"incident_log(N, p)","category":"page"},{"location":"manifolds/graph.html#Types-and-functions","page":"Graph manifold","title":"Types and functions","text":"","category":"section"},{"location":"manifolds/graph.html","page":"Graph manifold","title":"Graph manifold","text":"Modules = [Manifolds]\nPages = [\"manifolds/GraphManifold.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/graph.html#Manifolds.EdgeManifold","page":"Graph manifold","title":"Manifolds.EdgeManifold","text":"EdgeManifoldManifold <: GraphManifoldType\n\nA type for a GraphManifold where the data is given on the edges.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/graph.html#Manifolds.GraphManifold","page":"Graph manifold","title":"Manifolds.GraphManifold","text":"GraphManifold{G,𝔽,M,T} <: AbstractPowerManifold{𝔽,M,NestedPowerRepresentation}\n\nBuild a manifold, that is a PowerManifold of the AbstractManifold M either on the edges or vertices of a graph G depending on the GraphManifoldType T.\n\nFields\n\nG is an AbstractSimpleGraph\nM is a AbstractManifold\n\n\n\n\n\n","category":"type"},{"location":"manifolds/graph.html#Manifolds.GraphManifoldType","page":"Graph manifold","title":"Manifolds.GraphManifoldType","text":"GraphManifoldType\n\nThis type represents the type of data on the graph that the GraphManifold represents.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/graph.html#Manifolds.VertexManifold","page":"Graph manifold","title":"Manifolds.VertexManifold","text":"VectexGraphManifold <: GraphManifoldType\n\nA type for a GraphManifold where the data is given on the vertices.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/graph.html#Manifolds.incident_log-Tuple{GraphManifold{<:Graphs.AbstractGraph, 𝔽, <:AbstractManifold{𝔽}, VertexManifold} where 𝔽, Any}","page":"Graph manifold","title":"Manifolds.incident_log","text":"incident_log(M::GraphManifold, x)\n\nReturn the tangent vector on the (vertex) GraphManifold, where at each node the sum of the logs to incident nodes is computed. For a SimpleGraph, an egde is interpreted as double edge in the corresponding SimpleDiGraph\n\nIf the internal graph is a SimpleWeightedGraph the weighted sum of the tangent vectors is computed.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/graph.html#ManifoldsBase.check_point-Tuple{GraphManifold, Vararg{Any}}","page":"Graph manifold","title":"ManifoldsBase.check_point","text":"check_point(M::GraphManifold, p)\n\nCheck whether p is a valid point on the GraphManifold, i.e. its length equals the number of vertices (for VertexManifolds) or the number of edges (for EdgeManifolds) and that each element of p passes the check_point test for the base manifold M.manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/graph.html#ManifoldsBase.check_vector-Tuple{GraphManifold, Vararg{Any}}","page":"Graph manifold","title":"ManifoldsBase.check_vector","text":"check_vector(M::GraphManifold, p, X; kwargs...)\n\nCheck whether p is a valid point on the GraphManifold, and X it from its tangent space, i.e. its length equals the number of vertices (for VertexManifolds) or the number of edges (for EdgeManifolds) and that each element of X together with its corresponding entry of p passes the check_vector test for the base manifold M.manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/graph.html#ManifoldsBase.manifold_dimension-Tuple{GraphManifold{<:Graphs.AbstractGraph, 𝔽, <:AbstractManifold{𝔽}, EdgeManifold} where 𝔽}","page":"Graph manifold","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(N::GraphManifold{G,𝔽,M,EdgeManifold})\n\nreturns the manifold dimension of the GraphManifold N on the edges of a graph G=(VE), i.e.\n\ndim(mathcal N) = lvert E rvert dim(mathcal M)\n\nwhere mathcal M is the manifold of the data on the edges.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/graph.html#ManifoldsBase.manifold_dimension-Tuple{GraphManifold{<:Graphs.AbstractGraph, 𝔽, <:AbstractManifold{𝔽}, VertexManifold} where 𝔽}","page":"Graph manifold","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(N::GraphManifold{G,𝔽,M,VertexManifold})\n\nreturns the manifold dimension of the GraphManifold N on the vertices of a graph G=(VE), i.e.\n\ndim(mathcal N) = lvert V rvert dim(mathcal M)\n\nwhere mathcal M is the manifold of the data on the nodes.\n\n\n\n\n\n","category":"method"},{"location":"features/integration.html#Integration","page":"Integration","title":"Integration","text":"","category":"section"},{"location":"features/integration.html","page":"Integration","title":"Integration","text":"manifold_volume(::AbstractManifold)\nvolume_density(::AbstractManifold, ::Any, ::Any)","category":"page"},{"location":"features/integration.html#Manifolds.manifold_volume-Tuple{AbstractManifold}","page":"Integration","title":"Manifolds.manifold_volume","text":"manifold_volume(M::AbstractManifold)\n\nVolume of manifold M defined through integration of Riemannian volume element in a chart. Note that for many manifolds there is no universal agreement over the exact ranges over which the integration should happen. For details see [BST03].\n\n\n\n\n\n","category":"method"},{"location":"features/integration.html#Manifolds.volume_density-Tuple{AbstractManifold, Any, Any}","page":"Integration","title":"Manifolds.volume_density","text":"volume_density(M::AbstractManifold, p, X)\n\nVolume density function of manifold M, i.e. determinant of the differential of exponential map exp(M, p, X). Determinant can be understood as computed in a basis, from the matrix of the linear operator said differential corresponds to. Details are available in Section 4.1 of [CLLD22].\n\nNote that volume density is well-defined only for X for which exp(M, p, X) is injective.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/euclidean.html#EuclideanSection","page":"Euclidean","title":"Euclidean space","text":"","category":"section"},{"location":"manifolds/euclidean.html","page":"Euclidean","title":"Euclidean","text":"The Euclidean space ℝ^n is a simple model space, since it has curvature constantly zero everywhere; hence, nearly all operations simplify. The easiest way to generate an Euclidean space is to use a field, i.e. AbstractNumbers, e.g. to create the ℝ^n or ℝ^ntimes n you can simply type M = ℝ^n or ℝ^(n,n), respectively.","category":"page"},{"location":"manifolds/euclidean.html","page":"Euclidean","title":"Euclidean","text":"Modules = [Manifolds]\nPages = [\"manifolds/Euclidean.jl\"]\nOrder = [:type,:function]","category":"page"},{"location":"manifolds/euclidean.html#Manifolds.Euclidean","page":"Euclidean","title":"Manifolds.Euclidean","text":"Euclidean{T<:Tuple,𝔽} <: AbstractManifold{𝔽}\n\nEuclidean vector space.\n\nConstructor\n\nEuclidean(n)\n\nGenerate the n-dimensional vector space ℝ^n.\n\nEuclidean(n₁,n₂,...,nᵢ; field=ℝ)\n𝔽^(n₁,n₂,...,nᵢ) = Euclidean(n₁,n₂,...,nᵢ; field=𝔽)\n\nGenerate the vector space of k = n_1 cdot n_2 cdot cdot n_i values, i.e. the manifold 𝔽^n_1 n_2 n_i, 𝔽inℝℂ, whose elements are interpreted as n_1 n_2 n_i arrays. For i=2 we obtain a matrix space. The default field=ℝ can also be set to field=ℂ. The dimension of this space is k dim_ℝ 𝔽, where dim_ℝ 𝔽 is the real_dimension of the field 𝔽.\n\nEuclidean(; field=ℝ)\n\nGenerate the 1D Euclidean manifold for an ℝ-, ℂ-valued real- or complex-valued immutable values (in contrast to 1-element arrays from the constructor above).\n\n\n\n\n\n","category":"type"},{"location":"manifolds/euclidean.html#Base.exp-Tuple{Euclidean, Any, Any}","page":"Euclidean","title":"Base.exp","text":"exp(M::Euclidean, p, X)\n\nCompute the exponential map on the Euclidean manifold M from p in direction X, which in this case is just\n\nexp_p X = p + X\n\n\n\n\n\n","category":"method"},{"location":"manifolds/euclidean.html#Base.log-Tuple{Euclidean, Vararg{Any}}","page":"Euclidean","title":"Base.log","text":"log(M::Euclidean, p, q)\n\nCompute the logarithmic map on the Euclidean M from p to q, which in this case is just\n\nlog_p q = q-p\n\n\n\n\n\n","category":"method"},{"location":"manifolds/euclidean.html#LinearAlgebra.norm-Tuple{Euclidean, Any, Any}","page":"Euclidean","title":"LinearAlgebra.norm","text":"norm(M::Euclidean, p, X)\n\nCompute the norm of a tangent vector X at p on the Euclidean M, i.e. since every tangent space can be identified with M itself in this case, just the (Frobenius) norm of X.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/euclidean.html#Manifolds.manifold_volume-Tuple{Euclidean}","page":"Euclidean","title":"Manifolds.manifold_volume","text":"manifold_volume(::Euclidean)\n\nReturn volume of the Euclidean manifold, i.e. infinity.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/euclidean.html#Manifolds.volume_density-Tuple{Euclidean, Any, Any}","page":"Euclidean","title":"Manifolds.volume_density","text":"volume_density(M::Euclidean, p, X)\n\nReturn volume density function of Euclidean manifold M, i.e. 1.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/euclidean.html#ManifoldsBase.Weingarten-Tuple{Euclidean, Any, Any, Any}","page":"Euclidean","title":"ManifoldsBase.Weingarten","text":"Y = Weingarten(M::Euclidean, p, X, V)\nWeingarten!(M::Euclidean, Y, p, X, V)\n\nCompute the Weingarten map mathcal W_p at p on the Euclidean M with respect to the tangent vector X in T_pmathcal M and the normal vector V in N_pmathcal M.\n\nSince this a flat space by itself, the result is always the zero tangent vector.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/euclidean.html#ManifoldsBase.distance-Tuple{Euclidean, Any, Any}","page":"Euclidean","title":"ManifoldsBase.distance","text":"distance(M::Euclidean, p, q)\n\nCompute the Euclidean distance between two points on the Euclidean manifold M, i.e. for vectors it's just the norm of the difference, for matrices and higher order arrays, the matrix and ternsor Frobenius norm, respectively.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/euclidean.html#ManifoldsBase.embed-Tuple{Euclidean, Any, Any}","page":"Euclidean","title":"ManifoldsBase.embed","text":"embed(M::Euclidean, p, X)\n\nEmbed the tangent vector X at point p in M. Equivalent to an identity map.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/euclidean.html#ManifoldsBase.embed-Tuple{Euclidean, Any}","page":"Euclidean","title":"ManifoldsBase.embed","text":"embed(M::Euclidean, p)\n\nEmbed the point p in M. Equivalent to an identity map.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/euclidean.html#ManifoldsBase.injectivity_radius-Tuple{Euclidean}","page":"Euclidean","title":"ManifoldsBase.injectivity_radius","text":"injectivity_radius(M::Euclidean)\n\nReturn the injectivity radius on the Euclidean M, which is .\n\n\n\n\n\n","category":"method"},{"location":"manifolds/euclidean.html#ManifoldsBase.inner-Tuple{Euclidean, Vararg{Any}}","page":"Euclidean","title":"ManifoldsBase.inner","text":"inner(M::Euclidean, p, X, Y)\n\nCompute the inner product on the Euclidean M, which is just the inner product on the real-valued or complex valued vector space of arrays (or tensors) of size n_1 n_2 n_i, i.e.\n\ng_p(XY) = sum_k I overlineX_k Y_k\n\nwhere I is the set of vectors k ℕ^i, such that for all\n\ni j i it holds 1 k_j n_j and overlinecdot denotes the complex conjugate.\n\nFor the special case of i 2, i.e. matrices and vectors, this simplifies to\n\ng_p(XY) = X^mathrmHY\n\nwhere cdot^mathrmH denotes the Hermitian, i.e. complex conjugate transposed.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/euclidean.html#ManifoldsBase.is_flat-Tuple{Euclidean}","page":"Euclidean","title":"ManifoldsBase.is_flat","text":"is_flat(::Euclidean)\n\nReturn true. Euclidean is a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/euclidean.html#ManifoldsBase.manifold_dimension-Union{Tuple{Euclidean{N, 𝔽}}, Tuple{𝔽}, Tuple{N}} where {N, 𝔽}","page":"Euclidean","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::Euclidean)\n\nReturn the manifold dimension of the Euclidean M, i.e. the product of all array dimensions and the real_dimension of the underlying number system.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/euclidean.html#ManifoldsBase.parallel_transport_along-Tuple{Euclidean, Any, Any, AbstractVector}","page":"Euclidean","title":"ManifoldsBase.parallel_transport_along","text":"parallel_transport_along(M::Euclidean, p, X, c)\n\nthe parallel transport on Euclidean is the identiy, i.e. returns X.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/euclidean.html#ManifoldsBase.parallel_transport_direction-Tuple{Euclidean, Any, Any, Any}","page":"Euclidean","title":"ManifoldsBase.parallel_transport_direction","text":"parallel_transport_direction(M::Euclidean, p, X, d)\n\nthe parallel transport on Euclidean is the identiy, i.e. returns X.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/euclidean.html#ManifoldsBase.parallel_transport_to-Tuple{Euclidean, Any, Any, Any}","page":"Euclidean","title":"ManifoldsBase.parallel_transport_to","text":"parallel_transport_to(M::Euclidean, p, X, q)\n\nthe parallel transport on Euclidean is the identiy, i.e. returns X.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/euclidean.html#ManifoldsBase.project-Tuple{Euclidean, Any, Any}","page":"Euclidean","title":"ManifoldsBase.project","text":"project(M::Euclidean, p, X)\n\nProject an arbitrary vector X into the tangent space of a point p on the Euclidean M, which is just the identity, since any tangent space of M can be identified with all of M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/euclidean.html#ManifoldsBase.project-Tuple{Euclidean, Any}","page":"Euclidean","title":"ManifoldsBase.project","text":"project(M::Euclidean, p)\n\nProject an arbitrary point p onto the Euclidean manifold M, which is of course just the identity map.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/euclidean.html#ManifoldsBase.representation_size-Union{Tuple{Euclidean{N}}, Tuple{N}} where N","page":"Euclidean","title":"ManifoldsBase.representation_size","text":"representation_size(M::Euclidean)\n\nReturn the array dimensions required to represent an element on the Euclidean M, i.e. the vector of all array dimensions.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/euclidean.html#ManifoldsBase.riemann_tensor-Tuple{Euclidean, Vararg{Any, 4}}","page":"Euclidean","title":"ManifoldsBase.riemann_tensor","text":"riemann_tensor(M::Euclidean, p, X, Y, Z)\n\nCompute the Riemann tensor R(XY)Z at point p on Euclidean manifold M. Its value is always the zero tangent vector. ````\n\n\n\n\n\n","category":"method"},{"location":"manifolds/euclidean.html#ManifoldsBase.vector_transport_to-Tuple{Euclidean, Any, Any, Any, AbstractVectorTransportMethod}","page":"Euclidean","title":"ManifoldsBase.vector_transport_to","text":"vector_transport_to(M::Euclidean, p, X, q, ::AbstractVectorTransportMethod)\n\nTransport the vector X from the tangent space at p to the tangent space at q on the Euclidean M, which simplifies to the identity.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/euclidean.html#ManifoldsBase.zero_vector-Tuple{Euclidean, Vararg{Any}}","page":"Euclidean","title":"ManifoldsBase.zero_vector","text":"zero_vector(M::Euclidean, x)\n\nReturn the zero vector in the tangent space of x on the Euclidean M, which here is just a zero filled array the same size as x.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/multinomialsymmetric.html#Multinomial-symmetric-matrices","page":"Multinomial symmetric matrices","title":"Multinomial symmetric matrices","text":"","category":"section"},{"location":"manifolds/multinomialsymmetric.html","page":"Multinomial symmetric matrices","title":"Multinomial symmetric matrices","text":"Modules = [Manifolds]\nPages = [\"manifolds/MultinomialSymmetric.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/multinomialsymmetric.html#Manifolds.MultinomialSymmetric","page":"Multinomial symmetric matrices","title":"Manifolds.MultinomialSymmetric","text":"MultinomialSymmetric{n} <: AbstractMultinomialDoublyStochastic{N}\n\nThe multinomial symmetric matrices manifold consists of all symmetric nn matrices with positive entries such that each column sums to one, i.e.\n\nbeginaligned\nmathcalSP(n) coloneqq biglp ℝ^nn big p_ij 0 text for all i=1n j=1m\n p^mathrmT = p\n pmathbf1_n = mathbf1_n\nbigr\nendaligned\n\nwhere mathbf1_n is the vector of length n containing ones.\n\nIt is modeled as IsIsometricEmbeddedManifold. via the AbstractMultinomialDoublyStochastic type, since it shares a few functions also with AbstractMultinomialDoublyStochastic, most and foremost projection of a point from the embedding onto the manifold.\n\nThe tangent space can be written as\n\nT_pmathcalSP(n) coloneqq bigl\nX ℝ^nn big X = X^mathrmT text and \nXmathbf1_n = mathbf0_n\nbigr\n\nwhere mathbf0_n is the vector of length n containing zeros.\n\nMore details can be found in Section IV [DH19].\n\nConstructor\n\nMultinomialSymmetric(n)\n\nGenerate the manifold of matrices mathbb R^nn that are doubly stochastic and symmetric.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/multinomialsymmetric.html#ManifoldsBase.check_point-Union{Tuple{n}, Tuple{MultinomialSymmetric{n}, Any}} where n","page":"Multinomial symmetric matrices","title":"ManifoldsBase.check_point","text":"check_point(M::MultinomialSymmetric, p)\n\nChecks whether p is a valid point on the MultinomialSymmetric(m,n) M, i.e. is a symmetric matrix with positive entries whose rows sum to one.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/multinomialsymmetric.html#ManifoldsBase.check_vector-Union{Tuple{n}, Tuple{MultinomialSymmetric{n}, Any, Any}} where n","page":"Multinomial symmetric matrices","title":"ManifoldsBase.check_vector","text":"check_vector(M::MultinomialSymmetric p, X; kwargs...)\n\nChecks whether X is a valid tangent vector to p on the MultinomialSymmetric M. This means, that p is valid, that X is of correct dimension, symmetric, and sums to zero along any row.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/multinomialsymmetric.html#ManifoldsBase.is_flat-Tuple{MultinomialSymmetric}","page":"Multinomial symmetric matrices","title":"ManifoldsBase.is_flat","text":"is_flat(::MultinomialSymmetric)\n\nReturn false. MultinomialSymmetric is not a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/multinomialsymmetric.html#ManifoldsBase.manifold_dimension-Union{Tuple{MultinomialSymmetric{n}}, Tuple{n}} where n","page":"Multinomial symmetric matrices","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::MultinomialSymmetric{n}) where {n}\n\nreturns the dimension of the MultinomialSymmetric manifold namely\n\noperatornamedim_mathcalSP(n) = fracn(n-1)2\n\n\n\n\n\n","category":"method"},{"location":"manifolds/multinomialsymmetric.html#ManifoldsBase.project-Tuple{MultinomialSymmetric, Any, Any}","page":"Multinomial symmetric matrices","title":"ManifoldsBase.project","text":"project(M::MultinomialSymmetric{n}, p, Y) where {n}\n\nProject Y onto the tangent space at p on the MultinomialSymmetric M, return the result in X. The formula reads\n\n operatornameproj_p(Y) = Y - (αmathbf1_n^mathrmT + mathbf1_n α^mathrmT) p\n\nwhere denotes the Hadamard or elementwise product and mathbb1_n is the vector of length n containing ones. The two vector α ℝ^nn is given by solving\n\n (I_n+p)α = Ymathbf1\n\nwhere I_n is teh nn unit matrix and mathbf1_n is the vector of length n containing ones.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/multinomialsymmetric.html#ManifoldsBase.retract-Tuple{MultinomialSymmetric, Any, Any, ProjectionRetraction}","page":"Multinomial symmetric matrices","title":"ManifoldsBase.retract","text":"retract(M::MultinomialSymmetric, p, X, ::ProjectionRetraction)\n\ncompute a projection based retraction by projecting podotexp(Xp) back onto the manifold, where are elementwise multiplication and division, respectively. Similarly, exp refers to the elementwise exponentiation.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/multinomialsymmetric.html#Literature","page":"Multinomial symmetric matrices","title":"Literature","text":"","category":"section"},{"location":"manifolds/quotient.html#QuotientManifoldSection","page":"Quotient manifold","title":"Quotient manifold","text":"","category":"section"},{"location":"manifolds/quotient.html","page":"Quotient manifold","title":"Quotient manifold","text":"Modules = [Manifolds, ManifoldsBase]\nPages = [\"manifolds/QuotientManifold.jl\"]\nOrder = [:type]","category":"page"},{"location":"manifolds/quotient.html#Manifolds.IsQuotientManifold","page":"Quotient manifold","title":"Manifolds.IsQuotientManifold","text":"IsQuotientManifold <: AbstractTrait\n\nSpecify that a certain decorated manifold is a quotient manifold in the sense that it provides implicitly (or explicitly through QuotientManifold properties of a quotient manifold.\n\nSee QuotientManifold for more details.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/quotient.html#Manifolds.QuotientManifold","page":"Quotient manifold","title":"Manifolds.QuotientManifold","text":"QuotientManifold{M <: AbstractManifold{𝔽}, N} <: AbstractManifold{𝔽}\n\nEquip a manifold mathcal M explicitly with the property of being a quotient manifold.\n\nA manifold mathcal M is then a a quotient manifold of another manifold mathcal N, i.e. for an equivalence relation on mathcal N we have\n\n mathcal M = mathcal N = bigl p p mathcal N bigr\n\nwhere p q mathcal N q p denotes the equivalence class containing p. For more details see Subsection 3.4.1 [AMS08].\n\nThis manifold type models an explicit quotient structure. This should be done if either the default implementation of mathcal M uses another representation different from the quotient structure or if it provides a (default) quotient structure that is different from the one introduced here.\n\nFields\n\nmanifold – the manifold mathcal M in the introduction above.\ntotal_space – the manifold mathcal N in the introduction above.\n\nConstructor\n\nQuotientManifold(M,N)\n\nCreate a manifold where M is the quotient manifold and Nis its total space.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/quotient.html#Provided-functions","page":"Quotient manifold","title":"Provided functions","text":"","category":"section"},{"location":"manifolds/quotient.html","page":"Quotient manifold","title":"Quotient manifold","text":"Modules = [Manifolds, ManifoldsBase]\nPages = [\"manifolds/QuotientManifold.jl\"]\nOrder = [:function]","category":"page"},{"location":"manifolds/quotient.html#Manifolds.canonical_project!-Tuple{AbstractManifold, Any, Any}","page":"Quotient manifold","title":"Manifolds.canonical_project!","text":"canonical_project!(M, q, p)\n\nCompute the canonical projection π on a manifold mathcal M that IsQuotientManifold, e.g. a QuotientManifold in place of q.\n\nSee canonical_project for more details.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/quotient.html#Manifolds.canonical_project-Tuple{AbstractManifold, Any}","page":"Quotient manifold","title":"Manifolds.canonical_project","text":"canonical_project(M, p)\n\nCompute the canonical projection π on a manifold mathcal M that IsQuotientManifold, e.g. a QuotientManifold. The canonical (or natural) projection π from the total space mathcal N onto mathcal M given by\n\n π = π_mathcal N mathcal M mathcal N mathcal M p π_mathcal N mathcal M(p) = p\n\nin other words, this function implicitly assumes, that the total space mathcal N is given, for example explicitly when M is a QuotientManifold and p is a point on N.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/quotient.html#Manifolds.differential_canonical_project!-Tuple{AbstractManifold, Any, Any}","page":"Quotient manifold","title":"Manifolds.differential_canonical_project!","text":"differential_canonical_project!(M, Y, p, X)\n\nCompute the differential of the canonical projection π on a manifold mathcal M that IsQuotientManifold, e.g. a QuotientManifold. See differential_canonical_project for details.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/quotient.html#Manifolds.differential_canonical_project-Tuple{AbstractManifold, Any, Any}","page":"Quotient manifold","title":"Manifolds.differential_canonical_project","text":"differential_canonical_project(M, p, X)\n\nCompute the differential of the canonical projection π on a manifold mathcal M that IsQuotientManifold, e.g. a QuotientManifold. The canonical (or natural) projection π from the total space mathcal N onto mathcal M, such that its differential\n\n Dπ(p) T_pmathcal N T_π(p)mathcal M\n\nwhere again the total space might be implicitly assumed, or explicitly when using a QuotientManifold M. So here p is a point on N and X is from T_pmathcal N.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/quotient.html#Manifolds.get_orbit_action-Tuple{AbstractManifold}","page":"Quotient manifold","title":"Manifolds.get_orbit_action","text":"get_orbit_action(M::AbstractDecoratorManifold)\n\nReturn the group action that generates the orbit of an equivalence class of the quotient manifold M for which equivalence classes are orbits of an action of a Lie group. For the case that\n\nmathcal M = mathcal N mathcal O\n\nwhere mathcal O is a Lie group with its group action generating the orbit.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/quotient.html#Manifolds.get_total_space-Tuple{AbstractManifold}","page":"Quotient manifold","title":"Manifolds.get_total_space","text":"get_total_space(M::AbstractDecoratorManifold)\n\nReturn the total space of a manifold that IsQuotientManifold, e.g. a QuotientManifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/quotient.html#Manifolds.horizontal_component-Tuple{AbstractManifold, Any, Any}","page":"Quotient manifold","title":"Manifolds.horizontal_component","text":"horizontal_component(N::AbstractManifold, p, X)\n\nCompute the horizontal component of tangent vector X at point p in the total space of quotient manifold N.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/quotient.html#Manifolds.horizontal_lift!-Tuple{AbstractManifold, Any, Any, Any}","page":"Quotient manifold","title":"Manifolds.horizontal_lift!","text":"horizontal_lift!(N, Y, q, X)\nhorizontal_lift!(QuotientManifold{M,N}, Y, p, X)\n\nCompute the horizontal_lift of X from T_pmathcal M, p=π(q). to `T_q\\mathcal N in place of Y.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/quotient.html#Manifolds.horizontal_lift-Tuple{AbstractManifold, Any, Any}","page":"Quotient manifold","title":"Manifolds.horizontal_lift","text":"horizontal_lift(N::AbstractManifold, q, X)\nhorizontal_lift(::QuotientManifold{𝔽,MT<:AbstractManifold{𝔽},NT<:AbstractManifold}, p, X) where {𝔽}\n\nGiven a point q in total space of quotient manifold N such that p=π(q) is a point on a quotient manifold M (implicitly given for the first case) and a tangent vector X this method computes a tangent vector Y on the horizontal space of T_qmathcal N, i.e. the subspace that is orthogonal to the kernel of Dπ(q).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/quotient.html#Manifolds.vertical_component-Tuple{AbstractManifold, Any, Any}","page":"Quotient manifold","title":"Manifolds.vertical_component","text":"vertical_component(N::AbstractManifold, p, X)\n\nCompute the vertical component of tangent vector X at point p in the total space of quotient manifold N.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/centeredmatrices.html#Centered-matrices","page":"Centered matrices","title":"Centered matrices","text":"","category":"section"},{"location":"manifolds/centeredmatrices.html","page":"Centered matrices","title":"Centered matrices","text":"Modules = [Manifolds]\nPages = [\"manifolds/CenteredMatrices.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/centeredmatrices.html#Manifolds.CenteredMatrices","page":"Centered matrices","title":"Manifolds.CenteredMatrices","text":"CenteredMatrices{m,n,𝔽} <: AbstractDecoratorManifold{𝔽}\n\nThe manifold of m n real-valued or complex-valued matrices whose columns sum to zero, i.e.\n\nbigl p 𝔽^m n big 1 1 * p = 0 0 bigr\n\nwhere 𝔽 ℝℂ.\n\nConstructor\n\nCenteredMatrices(m, n[, field=ℝ])\n\nGenerate the manifold of m-by-n (field-valued) matrices whose columns sum to zero.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/centeredmatrices.html#ManifoldsBase.Weingarten-Tuple{CenteredMatrices, Any, Any, Any}","page":"Centered matrices","title":"ManifoldsBase.Weingarten","text":"Y = Weingarten(M::CenteredMatrices, p, X, V)\nWeingarten!(M::CenteredMatrices, Y, p, X, V)\n\nCompute the Weingarten map mathcal W_p at p on the CenteredMatrices M with respect to the tangent vector X in T_pmathcal M and the normal vector V in N_pmathcal M.\n\nSince this a flat space by itself, the result is always the zero tangent vector.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/centeredmatrices.html#ManifoldsBase.check_point-Union{Tuple{𝔽}, Tuple{n}, Tuple{m}, Tuple{CenteredMatrices{m, n, 𝔽}, Any}} where {m, n, 𝔽}","page":"Centered matrices","title":"ManifoldsBase.check_point","text":"check_point(M::CenteredMatrices{m,n,𝔽}, p; kwargs...)\n\nCheck whether the matrix is a valid point on the CenteredMatrices M, i.e. is an m-by-n matrix whose columns sum to zero.\n\nThe tolerance for the column sums of p can be set using kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/centeredmatrices.html#ManifoldsBase.check_vector-Union{Tuple{𝔽}, Tuple{n}, Tuple{m}, Tuple{CenteredMatrices{m, n, 𝔽}, Any, Any}} where {m, n, 𝔽}","page":"Centered matrices","title":"ManifoldsBase.check_vector","text":"check_vector(M::CenteredMatrices{m,n,𝔽}, p, X; kwargs... )\n\nCheck whether X is a tangent vector to manifold point p on the CenteredMatrices M, i.e. that X is a matrix of size (m, n) whose columns sum to zero and its values are from the correct AbstractNumbers. The tolerance for the column sums of p and X can be set using kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/centeredmatrices.html#ManifoldsBase.is_flat-Tuple{CenteredMatrices}","page":"Centered matrices","title":"ManifoldsBase.is_flat","text":"is_flat(::CenteredMatrices)\n\nReturn true. CenteredMatrices is a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/centeredmatrices.html#ManifoldsBase.manifold_dimension-Union{Tuple{CenteredMatrices{m, n, 𝔽}}, Tuple{𝔽}, Tuple{n}, Tuple{m}} where {m, n, 𝔽}","page":"Centered matrices","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::CenteredMatrices{m,n,𝔽})\n\nReturn the manifold dimension of the CenteredMatrices m-by-n matrix M over the number system 𝔽, i.e.\n\ndim(mathcal M) = (m*n - n) dim_ℝ 𝔽\n\nwhere dim_ℝ 𝔽 is the real_dimension of 𝔽.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/centeredmatrices.html#ManifoldsBase.project-Tuple{CenteredMatrices, Any, Any}","page":"Centered matrices","title":"ManifoldsBase.project","text":"project(M::CenteredMatrices, p, X)\n\nProject the matrix X onto the tangent space at p on the CenteredMatrices M, i.e.\n\noperatornameproj_p(X) = X - beginbmatrix\n1\n\n1\nendbmatrix * c_1 dots c_n\n\nwhere c_i = frac1msum_j=1^m x_ji for i = 1 dots n.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/centeredmatrices.html#ManifoldsBase.project-Tuple{CenteredMatrices, Any}","page":"Centered matrices","title":"ManifoldsBase.project","text":"project(M::CenteredMatrices, p)\n\nProjects p from the embedding onto the CenteredMatrices M, i.e.\n\noperatornameproj_mathcal M(p) = p - beginbmatrix\n1\n\n1\nendbmatrix * c_1 dots c_n\n\nwhere c_i = frac1msum_j=1^m p_ji for i = 1 dots n.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#GroupManifoldSection","page":"Group manifold","title":"Group manifolds and actions","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Lie groups, groups that are Riemannian manifolds with a smooth binary group operation AbstractGroupOperation, are implemented as AbstractDecoratorManifold and specifying the group operation using the IsGroupManifold or by decorating an existing manifold with a group operation using GroupManifold.","category":"page"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"The common addition and multiplication group operations of AdditionOperation and MultiplicationOperation are provided, though their behavior may be customized for a specific group.","category":"page"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"There are short introductions at the beginning of each subsection. They briefly mention what is available with links to more detailed descriptions.","category":"page"},{"location":"manifolds/group.html#Contents","page":"Group manifold","title":"Contents","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Pages = [\"group.md\"]\nDepth = 3","category":"page"},{"location":"manifolds/group.html#Groups","page":"Group manifold","title":"Groups","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"The following operations are available for group manifolds:","category":"page"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Identity: an allocation-free representation of the identity element of the group.\ninv: get the inverse of a given element.\ncompose: compose two given elements of a group.\nidentity_element get the identity element of the group, in the representation used by other points from the group.","category":"page"},{"location":"manifolds/group.html#Group-manifold","page":"Group manifold","title":"Group manifold","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"GroupManifold adds a group structure to the wrapped manifold. It does not affect metric (or connection) structure of the wrapped manifold, however it can to be further wrapped in MetricManifold to get invariant metrics, or in a ConnectionManifold to equip it with a Cartan-Schouten connection.","category":"page"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Modules = [Manifolds]\nPages = [\"groups/group.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/group.html#Manifolds.AbstractGroupOperation","page":"Group manifold","title":"Manifolds.AbstractGroupOperation","text":"AbstractGroupOperation\n\nAbstract type for smooth binary operations on elements of a Lie group mathcalG:\n\n mathcalG mathcalG mathcalG\n\nAn operation can be either defined for a specific group manifold over number system 𝔽 or in general, by defining for an operation Op the following methods:\n\nidentity_element!(::AbstractDecoratorManifold, q, q)\ninv!(::AbstractDecoratorManifold, q, p)\n_compose!(::AbstractDecoratorManifold, x, p, q)\n\nNote that a manifold is connected with an operation by wrapping it with a decorator, AbstractDecoratorManifold using the IsGroupManifold to specify the operation. For a concrete case the concrete wrapper GroupManifold can be used.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.AbstractInvarianceTrait","page":"Group manifold","title":"Manifolds.AbstractInvarianceTrait","text":"AbstractInvarianceTrait <: AbstractTrait\n\nA common supertype for anz AbstractTrait related to metric invariance\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.ActionDirection","page":"Group manifold","title":"Manifolds.ActionDirection","text":"ActionDirection\n\nDirection of action on a manifold, either LeftForwardAction, LeftBackwardAction, RightForwardAction or RightBackwardAction.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.ForwardBackwardSwitch","page":"Group manifold","title":"Manifolds.ForwardBackwardSwitch","text":"struct ForwardBackwardSwitch <: AbstractDirectionSwitchType end\n\nSwitch between forward and backward action, maintaining left/right direction.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.GroupExponentialRetraction","page":"Group manifold","title":"Manifolds.GroupExponentialRetraction","text":"GroupExponentialRetraction{D<:ActionDirection} <: AbstractRetractionMethod\n\nRetraction using the group exponential exp_lie \"translated\" to any point on the manifold.\n\nFor more details, see retract.\n\nConstructor\n\nGroupExponentialRetraction(conv::ActionDirection = LeftForwardAction())\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.GroupLogarithmicInverseRetraction","page":"Group manifold","title":"Manifolds.GroupLogarithmicInverseRetraction","text":"GroupLogarithmicInverseRetraction{D<:ActionDirection} <: AbstractInverseRetractionMethod\n\nRetraction using the group logarithm log_lie \"translated\" to any point on the manifold.\n\nFor more details, see inverse_retract.\n\nConstructor\n\nGroupLogarithmicInverseRetraction(conv::ActionDirection = LeftForwardAction())\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.HasBiinvariantMetric","page":"Group manifold","title":"Manifolds.HasBiinvariantMetric","text":"HasBiinvariantMetric <: AbstractInvarianceTrait\n\nSpecify that a certain the metric of a GroupManifold is a bi-invariant metric\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.HasLeftInvariantMetric","page":"Group manifold","title":"Manifolds.HasLeftInvariantMetric","text":"HasLeftInvariantMetric <: AbstractInvarianceTrait\n\nSpecify that a certain the metric of a GroupManifold is a left-invariant metric\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.HasRightInvariantMetric","page":"Group manifold","title":"Manifolds.HasRightInvariantMetric","text":"HasRightInvariantMetric <: AbstractInvarianceTrait\n\nSpecify that a certain the metric of a GroupManifold is a right-invariant metric\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.Identity","page":"Group manifold","title":"Manifolds.Identity","text":"Identity{O<:AbstractGroupOperation}\n\nRepresent the group identity element e mathcalG on a Lie group mathcal G with AbstractGroupOperation of type O.\n\nSimilar to the philosophy that points are agnostic of their group at hand, the identity does not store the group g it belongs to. However it depends on the type of the AbstractGroupOperation used.\n\nSee also identity_element on how to obtain the corresponding AbstractManifoldPoint or array representation.\n\nConstructors\n\nIdentity(G::AbstractDecoratorManifold{𝔽})\nIdentity(o::O)\nIdentity(::Type{O})\n\ncreate the identity of the corresponding subtype O<:AbstractGroupOperation\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.IsGroupManifold","page":"Group manifold","title":"Manifolds.IsGroupManifold","text":"IsGroupManifold{O<:AbstractGroupOperation} <: AbstractTrait\n\nA trait to declare an AbstractManifold as a manifold with group structure with operation of type O.\n\nUsing this trait you can turn a manifold that you implement implictly into a Lie group. If you wish to decorate an existing manifold with one (or different) AbstractGroupActions, see GroupManifold.\n\nConstructor\n\nIsGroupManifold(op)\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.LeftBackwardAction","page":"Group manifold","title":"Manifolds.LeftBackwardAction","text":"LeftBackwardAction()\n\nLeft action of a group on a manifold. For an action α X G X it is characterized by\n\nα(α(x h) g) = α(x gh)\n\nfor all g h G and x X.\n\nNote that a left action may still act from the right side in an expression.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.LeftForwardAction","page":"Group manifold","title":"Manifolds.LeftForwardAction","text":"LeftForwardAction()\n\nLeft action of a group on a manifold. For an action α G X X it is characterized by\n\nα(g α(h x)) = α(gh x)\n\nfor all g h G and x X.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.LeftRightSwitch","page":"Group manifold","title":"Manifolds.LeftRightSwitch","text":"struct LeftRightSwitch <: AbstractDirectionSwitchType end\n\nSwitch between left and right action, maintaining forward/backward direction.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.RightBackwardAction","page":"Group manifold","title":"Manifolds.RightBackwardAction","text":"RightBackwardAction()\n\nRight action of a group on a manifold. For an action α X G X it is characterized by\n\nα(α(x h) g) = α(x hg)\n\nfor all g h G and x X.\n\nNote that a right action may still act from the left side in an expression.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.RightForwardAction","page":"Group manifold","title":"Manifolds.RightForwardAction","text":"RightForwardAction()\n\nRight action of a group on a manifold. For an action α G X X it is characterized by\n\nα(g α(h x)) = α(hg x)\n\nfor all g h G and x X.\n\nNote that a right action may still act from the left side in an expression.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.SimultaneousSwitch","page":"Group manifold","title":"Manifolds.SimultaneousSwitch","text":"struct LeftRightSwitch <: AbstractDirectionSwitchType end\n\nSimultaneously switch left/right and forward/backward directions.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Base.inv-Tuple{AbstractDecoratorManifold, Vararg{Any}}","page":"Group manifold","title":"Base.inv","text":"inv(G::AbstractDecoratorManifold, p)\n\nInverse p^-1 mathcalG of an element p mathcalG, such that p circ p^-1 = p^-1 circ p = e mathcalG, where e is the Identity element of mathcalG.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.adjoint_action-Tuple{AbstractDecoratorManifold, Any, Any}","page":"Group manifold","title":"Manifolds.adjoint_action","text":"adjoint_action(G::AbstractDecoratorManifold, p, X)\n\nAdjoint action of the element p of the Lie group G on the element X of the corresponding Lie algebra.\n\nIt is defined as the differential of the group authomorphism Ψ_p(q) = pqp¹ at the identity of G.\n\nThe formula reads\n\noperatornameAd_p(X) = dΨ_p(e)X\n\nwhere e is the identity element of G.\n\nNote that the adjoint representation of a Lie group isn't generally faithful. Notably the adjoint representation of SO(2) is trivial.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.compose-Tuple{AbstractDecoratorManifold, Vararg{Any}}","page":"Group manifold","title":"Manifolds.compose","text":"compose(G::AbstractDecoratorManifold, p, q)\n\nCompose elements pq mathcalG using the group operation p circ q.\n\nFor implementing composition on a new group manifold, please overload _compose instead so that methods with Identity arguments are not ambiguous.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.exp_lie-Tuple{AbstractManifold, Any}","page":"Group manifold","title":"Manifolds.exp_lie","text":"exp_lie(G, X)\nexp_lie!(G, q, X)\n\nCompute the group exponential of the Lie algebra element X. It is equivalent to the exponential map defined by the CartanSchoutenMinus connection.\n\nGiven an element X 𝔤 = T_e mathcalG, where e is the Identity element of the group mathcalG, and 𝔤 is its Lie algebra, the group exponential is the map\n\nexp 𝔤 mathcalG\n\nsuch that for ts ℝ, γ(t) = exp (t X) defines a one-parameter subgroup with the following properties. Note that one-parameter subgroups are commutative (see [Suh13], section 3.5), even if the Lie group itself is not commutative.\n\nbeginaligned\nγ(t) = γ(-t)^-1\nγ(t + s) = γ(t) circ γ(s) = γ(s) circ γ(t)\nγ(0) = e\nlim_t 0 fracddt γ(t) = X\nendaligned\n\nnote: Note\nIn general, the group exponential map is distinct from the Riemannian exponential map exp.\n\nFor example for the MultiplicationOperation and either Number or AbstractMatrix the Lie exponential is the numeric/matrix exponential.\n\nexp X = operatornameExp X = sum_n=0^ frac1n X^n\n\nSince this function also depends on the group operation, make sure to implement the corresponding trait version exp_lie(::TraitList{<:IsGroupManifold}, G, X).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.get_coordinates_lie-Tuple{ManifoldsBase.TraitList{<:IsGroupManifold}, AbstractManifold, Any, AbstractBasis}","page":"Group manifold","title":"Manifolds.get_coordinates_lie","text":"get_coordinates_lie(G::AbstractManifold, X, B::AbstractBasis)\n\nGet the coordinates of an element X from the Lie algebra og G with respect to a basis B. This is similar to calling get_coordinates at the p=Identity(G).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.get_vector_lie-Tuple{ManifoldsBase.TraitList{<:IsGroupManifold}, AbstractManifold, Any, AbstractBasis}","page":"Group manifold","title":"Manifolds.get_vector_lie","text":"get_vector_lie(G::AbstractDecoratorManifold, a, B::AbstractBasis)\n\nReconstruct a tangent vector from the Lie algebra of G from cooordinates a of a basis B. This is similar to calling get_vector at the p=Identity(G).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.identity_element-Tuple{AbstractDecoratorManifold, Any}","page":"Group manifold","title":"Manifolds.identity_element","text":"identity_element(G::AbstractDecoratorManifold, p)\n\nReturn a point representation of the Identity on the IsGroupManifold G, where p indicates the type to represent the identity.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.identity_element-Tuple{AbstractDecoratorManifold}","page":"Group manifold","title":"Manifolds.identity_element","text":"identity_element(G)\n\nReturn a point representation of the Identity on the IsGroupManifold G. By default this representation is the default array or number representation. It should return the corresponding default representation of e as a point on G if points are not represented by arrays.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.inverse_translate-Tuple{AbstractDecoratorManifold, Vararg{Any}}","page":"Group manifold","title":"Manifolds.inverse_translate","text":"inverse_translate(G::AbstractDecoratorManifold, p, q, conv::ActionDirection=LeftForwardAction())\n\nInverse translate group element q by p with the inverse translation τ_p^-1 with the specified convention, either left (L_p^-1) or right (R_p^-1), defined as\n\nbeginaligned\nL_p^-1 q p^-1 circ q\nR_p^-1 q q circ p^-1\nendaligned\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.inverse_translate_diff-Tuple{AbstractDecoratorManifold, Vararg{Any}}","page":"Group manifold","title":"Manifolds.inverse_translate_diff","text":"inverse_translate_diff(G::AbstractDecoratorManifold, p, q, X, conv::ActionDirection=LeftForwardAction())\n\nFor group elements p q mathcalG and tangent vector X T_q mathcalG, compute the action on X of the differential of the inverse translation τ_p by p, with the specified left or right convention. The differential transports vectors:\n\n(mathrmdτ_p^-1)_q T_q mathcalG T_τ_p^-1 q mathcalG\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.is_group_manifold-Tuple{AbstractManifold, AbstractGroupOperation}","page":"Group manifold","title":"Manifolds.is_group_manifold","text":"is_group_manifold(G::GroupManifold)\nis_group_manifoldd(G::AbstractManifold, o::AbstractGroupOperation)\n\nreturns whether an AbstractDecoratorManifold is a group manifold with AbstractGroupOperation o. For a GroupManifold G this checks whether the right operations is stored within G.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.is_identity-Tuple{AbstractDecoratorManifold, Any}","page":"Group manifold","title":"Manifolds.is_identity","text":"is_identity(G::AbstractDecoratorManifold, q; kwargs)\n\nCheck whether q is the identity on the IsGroupManifold G, i.e. it is either the Identity{O} with the corresponding AbstractGroupOperation O, or (approximately) the correct point representation.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.lie_bracket-Tuple{AbstractDecoratorManifold, Any, Any}","page":"Group manifold","title":"Manifolds.lie_bracket","text":"lie_bracket(G::AbstractDecoratorManifold, X, Y)\n\nLie bracket between elements X and Y of the Lie algebra corresponding to the Lie group G, cf. IsGroupManifold.\n\nThis can be used to compute the adjoint representation of a Lie algebra. Note that this representation isn't generally faithful. Notably the adjoint representation of 𝔰𝔬(2) is trivial.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.log_lie-Tuple{AbstractDecoratorManifold, Any}","page":"Group manifold","title":"Manifolds.log_lie","text":"log_lie(G, q)\nlog_lie!(G, X, q)\n\nCompute the Lie group logarithm of the Lie group element q. It is equivalent to the logarithmic map defined by the CartanSchoutenMinus connection.\n\nGiven an element q mathcalG, compute the right inverse of the group exponential map exp_lie, that is, the element log q = X 𝔤 = T_e mathcalG, such that q = exp X\n\nnote: Note\nIn general, the group logarithm map is distinct from the Riemannian logarithm map log.For matrix Lie groups this is equal to the (matrix) logarithm:\n\nlog q = operatornameLog q = sum_n=1^ frac(-1)^n+1n (q - e)^n\n\nwhere e here is the Identity element, that is, 1 for numeric q or the identity matrix I_m for matrix q ℝ^m m.\n\nSince this function also depends on the group operation, make sure to implement either\n\n_log_lie(G, q) and _log_lie!(G, X, q) for the points not being the Identity\nthe trait version log_lie(::TraitList{<:IsGroupManifold}, G, e), log_lie(::TraitList{<:IsGroupManifold}, G, X, e) for own implementations of the identity case.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.switch_direction-Tuple{ActionDirection, Manifolds.AbstractDirectionSwitchType}","page":"Group manifold","title":"Manifolds.switch_direction","text":"switch_direction(::ActionDirection, type::AbstractDirectionSwitchType = SimultaneousSwitch())\n\nReturns type of action between left and right, forward or backward, or both at the same type, depending on type, which is either of LeftRightSwitch, ForwardBackwardSwitch or SimultaneousSwitch.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.translate-Tuple{AbstractDecoratorManifold, Vararg{Any}}","page":"Group manifold","title":"Manifolds.translate","text":"translate(G::AbstractDecoratorManifold, p, q, conv::ActionDirection=LeftForwardAction()])\n\nTranslate group element q by p with the translation τ_p with the specified convention, either left forward (L_p), left backward (R_p), right backward (R_p) or right forward (L_p), defined as\n\nbeginaligned\nL_p q p circ q\nL_p q p^-1 circ q\nR_p q q circ p\nR_p q q circ p^-1\nendaligned\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.translate_diff-Tuple{AbstractDecoratorManifold, Vararg{Any}}","page":"Group manifold","title":"Manifolds.translate_diff","text":"translate_diff(G::AbstractDecoratorManifold, p, q, X, conv::ActionDirection=LeftForwardAction())\n\nFor group elements p q mathcalG and tangent vector X T_q mathcalG, compute the action of the differential of the translation τ_p by p on X, with the specified left or right convention. The differential transports vectors:\n\n(mathrmdτ_p)_q T_q mathcalG T_τ_p q mathcalG\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#ManifoldsBase.hat-Union{Tuple{O}, Tuple{ManifoldsBase.TraitList{IsGroupManifold{O}}, AbstractDecoratorManifold, Identity{O}, Any}} where O<:AbstractGroupOperation","page":"Group manifold","title":"ManifoldsBase.hat","text":"hat(M::AbstractDecoratorManifold{𝔽,O}, ::Identity{O}, Xⁱ) where {𝔽,O<:AbstractGroupOperation}\n\nGiven a basis e_i on the tangent space at a the Identity and tangent component vector X^i, compute the equivalent vector representation ``X=X^i e_i**, where Einstein summation notation is used:\n\n X^i X^i e_i\n\nFor array manifolds, this converts a vector representation of the tangent vector to an array representation. The vee map is the hat map's inverse.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#ManifoldsBase.inverse_retract-Tuple{ManifoldsBase.TraitList{<:IsGroupManifold}, AbstractDecoratorManifold, Any, Any, Manifolds.GroupLogarithmicInverseRetraction}","page":"Group manifold","title":"ManifoldsBase.inverse_retract","text":"inverse_retract(\n G::AbstractDecoratorManifold,\n p,\n X,\n method::GroupLogarithmicInverseRetraction{<:ActionDirection},\n)\n\nCompute the inverse retraction using the group logarithm log_lie \"translated\" to any point on the manifold. With a group translation (translate) τ_p in a specified direction, the retraction is\n\noperatornameretr_p^-1 = (mathrmdτ_p)_e circ log circ τ_p^-1\n\nwhere log is the group logarithm (log_lie), and (mathrmdτ_p)_e is the action of the differential of translation τ_p evaluated at the identity element e (see translate_diff).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#ManifoldsBase.retract-Tuple{ManifoldsBase.TraitList{<:IsGroupManifold}, AbstractDecoratorManifold, Any, Any, Manifolds.GroupExponentialRetraction}","page":"Group manifold","title":"ManifoldsBase.retract","text":"retract(\n G::AbstractDecoratorManifold,\n p,\n X,\n method::GroupExponentialRetraction{<:ActionDirection},\n)\n\nCompute the retraction using the group exponential exp_lie \"translated\" to any point on the manifold. With a group translation (translate) τ_p in a specified direction, the retraction is\n\noperatornameretr_p = τ_p circ exp circ (mathrmdτ_p^-1)_p\n\nwhere exp is the group exponential (exp_lie), and (mathrmdτ_p^-1)_p is the action of the differential of inverse translation τ_p^-1 evaluated at p (see inverse_translate_diff).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#ManifoldsBase.vee-Union{Tuple{O}, Tuple{ManifoldsBase.TraitList{IsGroupManifold{O}}, AbstractDecoratorManifold, Identity{O}, Any}} where O<:AbstractGroupOperation","page":"Group manifold","title":"ManifoldsBase.vee","text":"vee(M::AbstractManifold, p, X)\n\nGiven a basis e_i on the tangent space at a point p and tangent vector X, compute the vector components X^i, such that X = X^i e_i, where Einstein summation notation is used:\n\nvee X^i e_i X^i\n\nFor array manifolds, this converts an array representation of the tangent vector to a vector representation. The hat map is the vee map's inverse.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#GroupManifold","page":"Group manifold","title":"GroupManifold","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"As a concrete wrapper for manifolds (e.g. when the manifold per se is a group manifold but another group structure should be implemented), there is the GroupManifold","category":"page"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Modules = [Manifolds]\nPages = [\"groups/GroupManifold.jl\"]\nOrder = [:constant, :type, :function]","category":"page"},{"location":"manifolds/group.html#Manifolds.GroupManifold","page":"Group manifold","title":"Manifolds.GroupManifold","text":"GroupManifold{𝔽,M<:AbstractManifold{𝔽},O<:AbstractGroupOperation} <: AbstractDecoratorManifold{𝔽}\n\nDecorator for a smooth manifold that equips the manifold with a group operation, thus making it a Lie group. See IsGroupManifold for more details.\n\nGroup manifolds by default forward metric-related operations to the wrapped manifold.\n\nConstructor\n\nGroupManifold(manifold, op)\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Generic-Operations","page":"Group manifold","title":"Generic Operations","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"For groups based on an addition operation or a group operation, several default implementations are provided.","category":"page"},{"location":"manifolds/group.html#Addition-Operation","page":"Group manifold","title":"Addition Operation","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Modules = [Manifolds]\nPages = [\"groups/addition_operation.jl\"]\nOrder = [:constant, :type, :function]","category":"page"},{"location":"manifolds/group.html#Manifolds.AdditionOperation","page":"Group manifold","title":"Manifolds.AdditionOperation","text":"AdditionOperation <: AbstractGroupOperation\n\nGroup operation that consists of simple addition.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Multiplication-Operation","page":"Group manifold","title":"Multiplication Operation","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Modules = [Manifolds]\nPages = [\"groups/multiplication_operation.jl\"]\nOrder = [:constant, :type, :function]","category":"page"},{"location":"manifolds/group.html#Manifolds.MultiplicationOperation","page":"Group manifold","title":"Manifolds.MultiplicationOperation","text":"MultiplicationOperation <: AbstractGroupOperation\n\nGroup operation that consists of multiplication.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Circle-group","page":"Group manifold","title":"Circle group","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Modules = [Manifolds]\nPages = [\"groups/circle_group.jl\"]\nOrder = [:constant, :type, :function]","category":"page"},{"location":"manifolds/group.html#Manifolds.CircleGroup","page":"Group manifold","title":"Manifolds.CircleGroup","text":"CircleGroup <: GroupManifold{Circle{ℂ},MultiplicationOperation}\n\nThe circle group is the complex circle (Circle(ℂ)) equipped with the group operation of complex multiplication (MultiplicationOperation).\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.RealCircleGroup","page":"Group manifold","title":"Manifolds.RealCircleGroup","text":"RealCircleGroup <: GroupManifold{Circle{ℝ},AdditionOperation}\n\nThe real circle group is the real circle (Circle(ℝ)) equipped with the group operation of addition (AdditionOperation).\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#General-linear-group","page":"Group manifold","title":"General linear group","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Modules = [Manifolds]\nPages = [\"groups/general_linear.jl\"]\nOrder = [:constant, :type, :function]","category":"page"},{"location":"manifolds/group.html#Manifolds.GeneralLinear","page":"Group manifold","title":"Manifolds.GeneralLinear","text":"GeneralLinear{n,𝔽} <:\n AbstractDecoratorManifold{𝔽}\n\nThe general linear group, that is, the group of all invertible matrices in 𝔽^nn.\n\nThe default metric is the left-mathrmGL(n)-right-mathrmO(n)-invariant metric whose inner product is\n\nX_pY_p_p = p^-1X_pp^-1Y_p_mathrmF = X_e Y_e_mathrmF\n\nwhere X_p Y_p T_p mathrmGL(n 𝔽), X_e = p^-1X_p 𝔤𝔩(n) = T_e mathrmGL(n 𝔽) = 𝔽^nn is the corresponding vector in the Lie algebra, and _mathrmF denotes the Frobenius inner product.\n\nBy default, tangent vectors X_p are represented with their corresponding Lie algebra vectors X_e = p^-1X_p.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Base.exp-Tuple{GeneralLinear, Any, Any}","page":"Group manifold","title":"Base.exp","text":"exp(G::GeneralLinear, p, X)\n\nCompute the exponential map on the GeneralLinear group.\n\nThe exponential map is\n\nexp_p colon X p operatornameExp(X^mathrmH) operatornameExp(X - X^mathrmH)\n\nwhere operatornameExp() denotes the matrix exponential, and ^mathrmH is the conjugate transpose [ALRV14] [NM16].\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Base.log-Tuple{GeneralLinear, Any, Any}","page":"Group manifold","title":"Base.log","text":"log(G::GeneralLinear, p, q)\n\nCompute the logarithmic map on the GeneralLinear(n) group.\n\nThe algorithm proceeds in two stages. First, the point r = p^-1 q is projected to the nearest element (under the Frobenius norm) of the direct product subgroup mathrmO(n) S^+, whose logarithmic map is exactly computed using the matrix logarithm. This initial tangent vector is then refined using the NLSolveInverseRetraction.\n\nFor GeneralLinear(n, ℂ), the logarithmic map is instead computed on the realified supergroup GeneralLinear(2n) and the resulting tangent vector is then complexified.\n\nNote that this implementation is experimental.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Base.rand-Tuple{GeneralLinear}","page":"Group manifold","title":"Base.rand","text":"Random.rand(G::GeneralLinear; vector_at=nothing, kwargs...)\n\nIf vector_at is nothing, return a random point on the GeneralLinear group G by using rand in the embedding.\n\nIf vector_at is not nothing, return a random tangent vector from the tangent space of the point vector_at on the GeneralLinear by using by using rand in the embedding.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Heisenberg-group","page":"Group manifold","title":"Heisenberg group","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Modules = [Manifolds]\nPages = [\"groups/heisenberg.jl\"]\nOrder = [:constant, :type, :function]","category":"page"},{"location":"manifolds/group.html#Manifolds.HeisenbergGroup","page":"Group manifold","title":"Manifolds.HeisenbergGroup","text":"HeisenbergGroup{n} <: AbstractDecoratorManifold{ℝ}\n\nHeisenberg group HeisenbergGroup(n) is the group of (n+2) (n+2) matrices [BP08]\n\nbeginbmatrix 1 mathbfa c \nmathbf0 I_n mathbfb \n0 mathbf0 1 endbmatrix\n\nwhere I_n is the nn unit matrix, mathbfa is a row vector of length n, mathbfb is a column vector of length n and c is a real number. The group operation is matrix multiplication.\n\nThe left-invariant metric on the manifold is used.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Base.exp-Tuple{HeisenbergGroup, Any, Any}","page":"Group manifold","title":"Base.exp","text":"exp(M::HeisenbergGroup, p, X)\n\nExponential map on the HeisenbergGroup M with the left-invariant metric. The expression reads\n\nexp_beginbmatrix 1 mathbfa_p c_p \nmathbf0 I_n mathbfb_p \n0 mathbf0 1 endbmatrixleft(beginbmatrix 0 mathbfa_X c_X \nmathbf0 0_n mathbfb_X \n0 mathbf0 0 endbmatrixright) =\nbeginbmatrix 1 mathbfa_p + mathbfa_X c_p + c_X + mathbfa_Xmathbfb_X2 + mathbfa_pmathbfb_X \nmathbf0 I_n mathbfb_p + mathbfb_X \n0 mathbf0 1 endbmatrix\n\nwhere I_n is the nn identity matrix, 0_n is the nn zero matrix and mathbfamathbfb is dot product of vectors.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Base.log-Tuple{HeisenbergGroup, Any, Any}","page":"Group manifold","title":"Base.log","text":"log(G::HeisenbergGroup, p, q)\n\nCompute the logarithmic map on the HeisenbergGroup group. The formula reads\n\nlog_beginbmatrix 1 mathbfa_p c_p \nmathbf0 I_n mathbfb_p \n0 mathbf0 1 endbmatrixleft(beginbmatrix 1 mathbfa_q c_q \nmathbf0 I_n mathbfb_q \n0 mathbf0 1 endbmatrixright) =\nbeginbmatrix 0 mathbfa_q - mathbfa_p c_q - c_p + mathbfa_pmathbfb_p - mathbfa_qmathbfb_q - (mathbfa_q - mathbfa_p)(mathbfb_q - mathbfb_p) 2 \nmathbf0 0_n mathbfb_q - mathbfb_p \n0 mathbf0 0 endbmatrix\n\nwhere I_n is the nn identity matrix, 0_n is the nn zero matrix and mathbfamathbfb is dot product of vectors.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Base.rand-Tuple{HeisenbergGroup}","page":"Group manifold","title":"Base.rand","text":"Random.rand(M::HeisenbergGroup; vector_at = nothing, σ::Real=1.0)\n\nIf vector_at is nothing, return a random point on the HeisenbergGroup M by sampling elements of the first row and the last column from the normal distribution with mean 0 and standard deviation σ.\n\nIf vector_at is not nothing, return a random tangent vector from the tangent space of the point vector_at on the HeisenbergGroup by using a normal distribution with mean 0 and standard deviation σ.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.exp_lie-Tuple{HeisenbergGroup, Any}","page":"Group manifold","title":"Manifolds.exp_lie","text":"exp_lie(M::HeisenbergGroup, X)\n\nLie group exponential for the HeisenbergGroup M of the vector X. The formula reads\n\nexpleft(beginbmatrix 0 mathbfa c \nmathbf0 0_n mathbfb \n0 mathbf0 0 endbmatrixright) = beginbmatrix 1 mathbfa c + mathbfamathbfb2 \nmathbf0 I_n mathbfb \n0 mathbf0 1 endbmatrix\n\nwhere I_n is the nn identity matrix, 0_n is the nn zero matrix and mathbfamathbfb is dot product of vectors.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.log_lie-Tuple{HeisenbergGroup, Any}","page":"Group manifold","title":"Manifolds.log_lie","text":"log_lie(M::HeisenbergGroup, p)\n\nLie group logarithm for the HeisenbergGroup M of the point p. The formula reads\n\nlogleft(beginbmatrix 1 mathbfa c \nmathbf0 I_n mathbfb \n0 mathbf0 1 endbmatrixright) =\nbeginbmatrix 0 mathbfa c - mathbfamathbfb2 \nmathbf0 0_n mathbfb \n0 mathbf0 0 endbmatrix\n\nwhere I_n is the nn identity matrix, 0_n is the nn zero matrix and mathbfamathbfb is dot product of vectors.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#ManifoldsBase.get_coordinates-Tuple{HeisenbergGroup, Any, Any, DefaultOrthonormalBasis{ℝ, ManifoldsBase.TangentSpaceType}}","page":"Group manifold","title":"ManifoldsBase.get_coordinates","text":"get_coordinates(M::HeisenbergGroup, p, X, ::DefaultOrthonormalBasis{ℝ,TangentSpaceType})\n\nGet coordinates of tangent vector X at point p from the HeisenbergGroup M. Given a matrix\n\nbeginbmatrix 1 mathbfa c \nmathbf0 I_n mathbfb \n0 mathbf0 1 endbmatrix\n\nthe coordinates are concatenated vectors mathbfa, mathbfb, and number c.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#ManifoldsBase.get_vector-Tuple{HeisenbergGroup, Any, Any, DefaultOrthonormalBasis{ℝ, ManifoldsBase.TangentSpaceType}}","page":"Group manifold","title":"ManifoldsBase.get_vector","text":"get_vector(M::HeisenbergGroup, p, Xⁱ, ::DefaultOrthonormalBasis{ℝ,TangentSpaceType})\n\nGet tangent vector with coordinates Xⁱ at point p from the HeisenbergGroup M. Given a vector of coordinates beginbmatrixmathbba mathbbb cendbmatrix the tangent vector is equal to\n\nbeginbmatrix 1 mathbfa c \nmathbf0 I_n mathbfb \n0 mathbf0 1 endbmatrix\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#ManifoldsBase.injectivity_radius-Tuple{HeisenbergGroup}","page":"Group manifold","title":"ManifoldsBase.injectivity_radius","text":"injectivity_radius(M::HeisenbergGroup)\n\nReturn the injectivity radius on the HeisenbergGroup M, which is .\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#ManifoldsBase.project-Union{Tuple{n}, Tuple{HeisenbergGroup{n}, Any, Any}} where n","page":"Group manifold","title":"ManifoldsBase.project","text":"project(M::HeisenbergGroup{n}, p, X)\n\nProject a matrix X in the Euclidean embedding onto the Lie algebra of HeisenbergGroup M. Sets the diagonal elements to 0 and all non-diagonal elements except the first row and the last column to 0.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#ManifoldsBase.project-Union{Tuple{n}, Tuple{HeisenbergGroup{n}, Any}} where n","page":"Group manifold","title":"ManifoldsBase.project","text":"project(M::HeisenbergGroup{n}, p)\n\nProject a matrix p in the Euclidean embedding onto the HeisenbergGroup M. Sets the diagonal elements to 1 and all non-diagonal elements except the first row and the last column to 0.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#(Special)-Orthogonal-and-(Special)-Unitary-group","page":"Group manifold","title":"(Special) Orthogonal and (Special) Unitary group","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Since the orthogonal, unitary and special orthogonal and special unitary groups share many common functions, these are also implemented on a common level.","category":"page"},{"location":"manifolds/group.html#Common-functions","page":"Group manifold","title":"Common functions","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Modules = [Manifolds]\nPages = [\"groups/general_unitary_groups.jl\"]\nOrder = [:constant, :type, :function]","category":"page"},{"location":"manifolds/group.html#Manifolds.GeneralUnitaryMultiplicationGroup","page":"Group manifold","title":"Manifolds.GeneralUnitaryMultiplicationGroup","text":"GeneralUnitaryMultiplicationGroup{n,𝔽,M} = GroupManifold{𝔽,M,MultiplicationOperation}\n\nA generic type for Lie groups based on a unitary property and matrix multiplcation, see e.g. Orthogonal, SpecialOrthogonal, Unitary, and SpecialUnitary\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.exp_lie-Tuple{Manifolds.GeneralUnitaryMultiplicationGroup{2, ℝ}, Any}","page":"Group manifold","title":"Manifolds.exp_lie","text":" exp_lie(G::Orthogonal{2}, X)\n exp_lie(G::SpecialOrthogonal{2}, X)\n\nCompute the Lie group exponential map on the Orthogonal(2) or SpecialOrthogonal(2) group. Given X = beginpmatrix 0 -θ θ 0 endpmatrix, the group exponential is\n\nexp_e colon X beginpmatrix cos θ -sin θ sin θ cos θ endpmatrix\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.exp_lie-Tuple{Manifolds.GeneralUnitaryMultiplicationGroup{4, ℝ}, Any}","page":"Group manifold","title":"Manifolds.exp_lie","text":" exp_lie(G::Orthogonal{4}, X)\n exp_lie(G::SpecialOrthogonal{4}, X)\n\nCompute the group exponential map on the Orthogonal(4) or the SpecialOrthogonal group. The algorithm used is a more numerically stable form of those proposed in [GX02], [AR13].\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Orthogonal-group","page":"Group manifold","title":"Orthogonal group","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Modules = [Manifolds]\nPages = [\"groups/orthogonal.jl\"]\nOrder = [:constant, :type, :function]","category":"page"},{"location":"manifolds/group.html#Manifolds.Orthogonal","page":"Group manifold","title":"Manifolds.Orthogonal","text":"Orthogonal{n} = GeneralUnitaryMultiplicationGroup{n,ℝ,AbsoluteDeterminantOneMatrices}\n\nOrthogonal group mathrmO(n) represented by OrthogonalMatrices.\n\nConstructor\n\nOrthogonal(n)\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Special-orthogonal-group","page":"Group manifold","title":"Special orthogonal group","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Modules = [Manifolds]\nPages = [\"groups/special_orthogonal.jl\"]\nOrder = [:constant, :type, :function]","category":"page"},{"location":"manifolds/group.html#Manifolds.SpecialOrthogonal","page":"Group manifold","title":"Manifolds.SpecialOrthogonal","text":"SpecialOrthogonal{n} <: GroupManifold{ℝ,Rotations{n},MultiplicationOperation}\n\nSpecial orthogonal group mathrmSO(n) represented by rotation matrices, see Rotations.\n\nConstructor\n\nSpecialOrthogonal(n)\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Special-unitary-group","page":"Group manifold","title":"Special unitary group","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Modules = [Manifolds]\nPages = [\"groups/special_unitary.jl\"]\nOrder = [:constant, :type, :function]","category":"page"},{"location":"manifolds/group.html#Manifolds.SpecialUnitary","page":"Group manifold","title":"Manifolds.SpecialUnitary","text":"SpecialUnitary{n} = GeneralUnitaryMultiplicationGroup{n,ℝ,GeneralUnitaryMatrices{n,ℂ,DeterminantOneMatrices}}\n\nThe special unitary group mathrmSU(n) represented by unitary matrices of determinant +1.\n\nThe tangent spaces are of the form\n\nT_pmathrmSU(x) = bigl X in mathbb C^nn big X = pY text where Y = -Y^mathrmH bigr\n\nand we represent tangent vectors by just storing the SkewHermitianMatrices Y, or in other words we represent the tangent spaces employing the Lie algebra mathfraksu(n).\n\nConstructor\n\nSpecialUnitary(n)\n\nGenerate the Lie group of nn unitary matrices with determinant +1.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#ManifoldsBase.project-Tuple{SpecialUnitary, Vararg{Any}}","page":"Group manifold","title":"ManifoldsBase.project","text":"project(G::SpecialUnitary, p)\n\nProject p to the nearest point on the SpecialUnitary group G.\n\nGiven the singular value decomposition p = U S V^mathrmH, with the singular values sorted in descending order, the projection is\n\noperatornameproj_mathrmSU(n)(p) =\nUoperatornamediagleft11det(U V^mathrmH)right V^mathrmH\n\nThe diagonal matrix ensures that the determinant of the result is +1.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Unitary-group","page":"Group manifold","title":"Unitary group","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Modules = [Manifolds]\nPages = [\"groups/unitary.jl\"]\nOrder = [:constant, :type, :function]","category":"page"},{"location":"manifolds/group.html#Manifolds.Unitary","page":"Group manifold","title":"Manifolds.Unitary","text":" Unitary{n,𝔽} = GeneralUnitaryMultiplicationGroup{n,𝔽,AbsoluteDeterminantOneMatrices}\n\nThe group of unitary matrices mathrmU(n 𝔽), either complex (when 𝔽=ℂ) or quaternionic (when 𝔽=ℍ)\n\nThe group consists of all points p 𝔽^n n where p^mathrmHp = pp^mathrmH = I.\n\nThe tangent spaces are if the form\n\nT_pmathrmU(n) = bigl X in 𝔽^nn big X = pY text where Y = -Y^mathrmH bigr\n\nand we represent tangent vectors by just storing the SkewHermitianMatrices Y, or in other words we represent the tangent spaces employing the Lie algebra mathfraku(n 𝔽).\n\nQuaternionic unitary group is isomorphic to the compact symplectic group of the same dimension.\n\nConstructor\n\nUnitary(n, 𝔽::AbstractNumbers=ℂ)\n\nConstruct mathrmU(n 𝔽). See also Orthogonal(n) for the real-valued case.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.exp_lie-Tuple{Unitary{2, ℂ}, Any}","page":"Group manifold","title":"Manifolds.exp_lie","text":"exp_lie(G::Unitary{2,ℂ}, X)\n\nCompute the group exponential map on the Unitary(2) group, which is\n\nexp_e colon X e^operatornametr(X) 2 left(cos θ I + fracsin θθ left(X - fracoperatornametr(X)2 Iright)right)\n\nwhere θ = frac12 sqrt4det(X) - operatornametr(X)^2.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Power-group","page":"Group manifold","title":"Power group","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Modules = [Manifolds]\nPages = [\"groups/power_group.jl\"]\nOrder = [:constant, :type, :function]","category":"page"},{"location":"manifolds/group.html#Manifolds.PowerGroup-Tuple{AbstractPowerManifold}","page":"Group manifold","title":"Manifolds.PowerGroup","text":"PowerGroup{𝔽,T} <: GroupManifold{𝔽,<:AbstractPowerManifold{𝔽,M,RPT},ProductOperation}\n\nDecorate a power manifold with a ProductOperation.\n\nConstituent manifold of the power manifold must also have a IsGroupManifold or a decorated instance of one. This type is mostly useful for equipping the direct product of group manifolds with an Identity element.\n\nConstructor\n\nPowerGroup(manifold::AbstractPowerManifold)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.PowerGroupNested","page":"Group manifold","title":"Manifolds.PowerGroupNested","text":"PowerGroupNested\n\nAlias to PowerGroup with NestedPowerRepresentation representation.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.PowerGroupNestedReplacing","page":"Group manifold","title":"Manifolds.PowerGroupNestedReplacing","text":"PowerGroupNestedReplacing\n\nAlias to PowerGroup with NestedReplacingPowerRepresentation representation.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Product-group","page":"Group manifold","title":"Product group","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Modules = [Manifolds]\nPages = [\"groups/product_group.jl\"]\nOrder = [:constant, :type, :function]","category":"page"},{"location":"manifolds/group.html#Manifolds.ProductGroup-Union{Tuple{ProductManifold{𝔽}}, Tuple{𝔽}} where 𝔽","page":"Group manifold","title":"Manifolds.ProductGroup","text":"ProductGroup{𝔽,T} <: GroupManifold{𝔽,ProductManifold{T},ProductOperation}\n\nDecorate a product manifold with a ProductOperation.\n\nEach submanifold must also have a IsGroupManifold or a decorated instance of one. This type is mostly useful for equipping the direct product of group manifolds with an Identity element.\n\nConstructor\n\nProductGroup(manifold::ProductManifold)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.ProductOperation","page":"Group manifold","title":"Manifolds.ProductOperation","text":"ProductOperation <: AbstractGroupOperation\n\nDirect product group operation.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Semidirect-product-group","page":"Group manifold","title":"Semidirect product group","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Modules = [Manifolds]\nPages = [\"groups/semidirect_product_group.jl\"]\nOrder = [:constant, :type, :function]","category":"page"},{"location":"manifolds/group.html#Manifolds.SemidirectProductGroup-Union{Tuple{𝔽}, Tuple{AbstractDecoratorManifold{𝔽}, AbstractDecoratorManifold{𝔽}, AbstractGroupAction}} where 𝔽","page":"Group manifold","title":"Manifolds.SemidirectProductGroup","text":"SemidirectProductGroup(N::GroupManifold, H::GroupManifold, A::AbstractGroupAction)\n\nA group that is the semidirect product of a normal group mathcalN and a subgroup mathcalH, written mathcalG = mathcalN _θ mathcalH, where θ mathcalH mathcalN mathcalN is an automorphism action of mathcalH on mathcalN. The group mathcalG has the composition rule\n\ng circ g = (n h) circ (n h) = (n circ θ_h(n) h circ h)\n\nand the inverse\n\ng^-1 = (n h)^-1 = (θ_h^-1(n^-1) h^-1)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.SemidirectProductOperation","page":"Group manifold","title":"Manifolds.SemidirectProductOperation","text":"SemidirectProductOperation(action::AbstractGroupAction)\n\nGroup operation of a semidirect product group. The operation consists of the operation opN on a normal subgroup N, the operation opH on a subgroup H, and an automorphism action of elements of H on N. Only the action is stored.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.identity_element-Tuple{SemidirectProductGroup}","page":"Group manifold","title":"Manifolds.identity_element","text":"identity_element(G::SemidirectProductGroup)\n\nGet the identity element of SemidirectProductGroup G. Uses ArrayPartition from RecursiveArrayTools.jl to represent the point.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.translate_diff-Tuple{SemidirectProductGroup, Any, Any, Any, LeftForwardAction}","page":"Group manifold","title":"Manifolds.translate_diff","text":"translate_diff(G::SemidirectProductGroup, p, q, X, conX::LeftForwardAction)\n\nPerform differential of the left translation on the semidirect product group G.\n\nSince the left translation is defined as (cf. SemidirectProductGroup):\n\nL_(n h) (n h) = ( L_n θ_h(n) L_h h)\n\nthen its differential can be computed as\n\nmathrmdL_(n h)(X_n X_h) = ( mathrmdL_n (mathrmdθ_h(X_n)) mathrmdL_h X_h)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Special-Euclidean-group","page":"Group manifold","title":"Special Euclidean group","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Modules = [Manifolds]\nPages = [\"groups/special_euclidean.jl\"]\nOrder = [:constant, :type, :function]","category":"page"},{"location":"manifolds/group.html#Manifolds.SpecialEuclidean","page":"Group manifold","title":"Manifolds.SpecialEuclidean","text":"SpecialEuclidean(n)\n\nSpecial Euclidean group mathrmSE(n), the group of rigid motions.\n\nmathrmSE(n) is the semidirect product of the TranslationGroup on ℝ^n and SpecialOrthogonal(n)\n\nmathrmSE(n) mathrmT(n) _θ mathrmSO(n)\n\nwhere θ is the canonical action of mathrmSO(n) on mathrmT(n) by vector rotation.\n\nThis constructor is equivalent to calling\n\nTn = TranslationGroup(n)\nSOn = SpecialOrthogonal(n)\nSemidirectProductGroup(Tn, SOn, RotationAction(Tn, SOn))\n\nPoints on mathrmSE(n) may be represented as points on the underlying product manifold mathrmT(n) mathrmSO(n). For group-specific functions, they may also be represented as affine matrices with size (n + 1, n + 1) (see affine_matrix), for which the group operation is MultiplicationOperation.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.SpecialEuclideanInGeneralLinear","page":"Group manifold","title":"Manifolds.SpecialEuclideanInGeneralLinear","text":"SpecialEuclideanInGeneralLinear\n\nAn explicit isometric and homomorphic embedding of mathrmSE(n) in mathrmGL(n+1) and 𝔰𝔢(n) in 𝔤𝔩(n+1). Note that this is not a transparently isometric embedding.\n\nConstructor\n\nSpecialEuclideanInGeneralLinear(n)\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.adjoint_action-Tuple{GroupManifold{ℝ, ProductManifold{ℝ, Tuple{TranslationGroup{Tuple{3}, ℝ}, SpecialOrthogonal{3}}}, Manifolds.SemidirectProductOperation{RotationAction{TranslationGroup{Tuple{3}, ℝ}, SpecialOrthogonal{3}, LeftForwardAction}}}, Any, TFVector{<:Any, VeeOrthogonalBasis{ℝ}}}","page":"Group manifold","title":"Manifolds.adjoint_action","text":"adjoint_action(::SpecialEuclidean{3}, p, fX::TFVector{<:Any,VeeOrthogonalBasis{ℝ}})\n\nAdjoint action of the SpecialEuclidean group on the vector with coefficients fX tangent at point p.\n\nThe formula for the coefficients reads t(Rω) + Rr for the translation part and Rω for the rotation part, where t is the translation part of p, R is the rotation matrix part of p, r is the translation part of fX and ω is the rotation part of fX, is the cross product and is the matrix product.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.affine_matrix-Union{Tuple{n}, Tuple{SpecialEuclidean{n}, Any}} where n","page":"Group manifold","title":"Manifolds.affine_matrix","text":"affine_matrix(G::SpecialEuclidean, p) -> AbstractMatrix\n\nRepresent the point p mathrmSE(n) as an affine matrix. For p = (t R) mathrmSE(n), where t mathrmT(n) R mathrmSO(n), the affine representation is the n + 1 n + 1 matrix\n\nbeginpmatrix\nR t \n0^mathrmT 1\nendpmatrix\n\nThis function embeds mathrmSE(n) in the general linear group mathrmGL(n+1). It is an isometric embedding and group homomorphism [Ric88].\n\nSee also screw_matrix for matrix representations of the Lie algebra.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.exp_lie-Tuple{GroupManifold{ℝ, ProductManifold{ℝ, Tuple{TranslationGroup{Tuple{2}, ℝ}, SpecialOrthogonal{2}}}, Manifolds.SemidirectProductOperation{RotationAction{TranslationGroup{Tuple{2}, ℝ}, SpecialOrthogonal{2}, LeftForwardAction}}}, Any}","page":"Group manifold","title":"Manifolds.exp_lie","text":"exp_lie(G::SpecialEuclidean{2}, X)\n\nCompute the group exponential of X = (b Ω) 𝔰𝔢(2), where b 𝔱(2) and Ω 𝔰𝔬(2):\n\nexp X = (t R) = (U(θ) b exp Ω)\n\nwhere t mathrmT(2), R = exp Ω is the group exponential on mathrmSO(2),\n\nU(θ) = fracsin θθ I_2 + frac1 - cos θθ^2 Ω\n\nand θ = frac1sqrt2 lVert Ω rVert_e (see norm) is the angle of the rotation.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.exp_lie-Tuple{GroupManifold{ℝ, ProductManifold{ℝ, Tuple{TranslationGroup{Tuple{3}, ℝ}, SpecialOrthogonal{3}}}, Manifolds.SemidirectProductOperation{RotationAction{TranslationGroup{Tuple{3}, ℝ}, SpecialOrthogonal{3}, LeftForwardAction}}}, Any}","page":"Group manifold","title":"Manifolds.exp_lie","text":"exp_lie(G::SpecialEuclidean{3}, X)\n\nCompute the group exponential of X = (b Ω) 𝔰𝔢(3), where b 𝔱(3) and Ω 𝔰𝔬(3):\n\nexp X = (t R) = (U(θ) b exp Ω)\n\nwhere t mathrmT(3), R = exp Ω is the group exponential on mathrmSO(3),\n\nU(θ) = I_3 + frac1 - cos θθ^2 Ω + fracθ - sin θθ^3 Ω^2\n\nand θ = frac1sqrt2 lVert Ω rVert_e (see norm) is the angle of the rotation.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.exp_lie-Tuple{SpecialEuclidean, Any}","page":"Group manifold","title":"Manifolds.exp_lie","text":"exp_lie(G::SpecialEuclidean{n}, X)\n\nCompute the group exponential of X = (b Ω) 𝔰𝔢(n), where b 𝔱(n) and Ω 𝔰𝔬(n):\n\nexp X = (t R)\n\nwhere t mathrmT(n) and R = exp Ω is the group exponential on mathrmSO(n).\n\nIn the screw_matrix representation, the group exponential is the matrix exponential (see exp_lie).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.lie_bracket-Tuple{SpecialEuclidean, ProductRepr, ProductRepr}","page":"Group manifold","title":"Manifolds.lie_bracket","text":"lie_bracket(G::SpecialEuclidean, X::ProductRepr, Y::ProductRepr)\nlie_bracket(G::SpecialEuclidean, X::ArrayPartition, Y::ArrayPartition)\nlie_bracket(G::SpecialEuclidean, X::AbstractMatrix, Y::AbstractMatrix)\n\nCalculate the Lie bracket between elements X and Y of the special Euclidean Lie algebra. For the matrix representation (which can be obtained using screw_matrix) the formula is X Y = XY-YX, while in the ProductRepr representation the formula reads X Y = (t_1 R_1) (t_2 R_2) = (R_1 t_2 - R_2 t_1 R_1 R_2 - R_2 R_1).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.log_lie-Tuple{GroupManifold{ℝ, ProductManifold{ℝ, Tuple{TranslationGroup{Tuple{2}, ℝ}, SpecialOrthogonal{2}}}, Manifolds.SemidirectProductOperation{RotationAction{TranslationGroup{Tuple{2}, ℝ}, SpecialOrthogonal{2}, LeftForwardAction}}}, Any}","page":"Group manifold","title":"Manifolds.log_lie","text":"log_lie(G::SpecialEuclidean{2}, p)\n\nCompute the group logarithm of p = (t R) mathrmSE(2), where t mathrmT(2) and R mathrmSO(2):\n\nlog p = (b Ω) = (U(θ)^-1 t log R)\n\nwhere b 𝔱(2), Ω = log R 𝔰𝔬(2) is the group logarithm on mathrmSO(2),\n\nU(θ) = fracsin θθ I_2 + frac1 - cos θθ^2 Ω\n\nand θ = frac1sqrt2 lVert Ω rVert_e (see norm) is the angle of the rotation.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.log_lie-Tuple{GroupManifold{ℝ, ProductManifold{ℝ, Tuple{TranslationGroup{Tuple{3}, ℝ}, SpecialOrthogonal{3}}}, Manifolds.SemidirectProductOperation{RotationAction{TranslationGroup{Tuple{3}, ℝ}, SpecialOrthogonal{3}, LeftForwardAction}}}, Any}","page":"Group manifold","title":"Manifolds.log_lie","text":"log_lie(G::SpecialEuclidean{3}, p)\n\nCompute the group logarithm of p = (t R) mathrmSE(3), where t mathrmT(3) and R mathrmSO(3):\n\nlog p = (b Ω) = (U(θ)^-1 t log R)\n\nwhere b 𝔱(3), Ω = log R 𝔰𝔬(3) is the group logarithm on mathrmSO(3),\n\nU(θ) = I_3 + frac1 - cos θθ^2 Ω + fracθ - sin θθ^3 Ω^2\n\nand θ = frac1sqrt2 lVert Ω rVert_e (see norm) is the angle of the rotation.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.log_lie-Tuple{SpecialEuclidean, Any}","page":"Group manifold","title":"Manifolds.log_lie","text":"log_lie(G::SpecialEuclidean{n}, p) where {n}\n\nCompute the group logarithm of p = (t R) mathrmSE(n), where t mathrmT(n) and R mathrmSO(n):\n\nlog p = (b Ω)\n\nwhere b 𝔱(n) and Ω = log R 𝔰𝔬(n) is the group logarithm on mathrmSO(n).\n\nIn the affine_matrix representation, the group logarithm is the matrix logarithm (see log_lie):\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.screw_matrix-Union{Tuple{n}, Tuple{SpecialEuclidean{n}, Any}} where n","page":"Group manifold","title":"Manifolds.screw_matrix","text":"screw_matrix(G::SpecialEuclidean, X) -> AbstractMatrix\n\nRepresent the Lie algebra element X 𝔰𝔢(n) = T_e mathrmSE(n) as a screw matrix. For X = (b Ω) 𝔰𝔢(n), where Ω 𝔰𝔬(n) = T_e mathrmSO(n), the screw representation is the n + 1 n + 1 matrix\n\nbeginpmatrix\nΩ b \n0^mathrmT 0\nendpmatrix\n\nThis function embeds 𝔰𝔢(n) in the general linear Lie algebra 𝔤𝔩(n+1) but it's not a homomorphic embedding (see SpecialEuclideanInGeneralLinear for a homomorphic one).\n\nSee also affine_matrix for matrix representations of the Lie group.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.translate_diff-Tuple{SpecialEuclidean, Any, Any, Any, RightBackwardAction}","page":"Group manifold","title":"Manifolds.translate_diff","text":"translate_diff(G::SpecialEuclidean, p, q, X, ::RightBackwardAction)\n\nDifferential of the right action of the SpecialEuclidean group on itself. The formula for the rotation part is the differential of the right rotation action, while the formula for the translation part reads\n\nR_qX_Rt_p + X_t\n\nwhere R_q is the rotation part of q, X_R is the rotation part of X, t_p is the translation part of p and X_t is the translation part of X.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#ManifoldsBase.embed-Tuple{EmbeddedManifold{ℝ, <:SpecialEuclidean, <:GeneralLinear}, Any, Any}","page":"Group manifold","title":"ManifoldsBase.embed","text":"embed(M::SpecialEuclideanInGeneralLinear, p, X)\n\nEmbed the tangent vector X at point p on SpecialEuclidean in the GeneralLinear group. Point p can use any representation valid for SpecialEuclidean. The embedding is similar from the one defined by screw_matrix but the translation part is multiplied by inverse of the rotation part.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#ManifoldsBase.embed-Tuple{EmbeddedManifold{ℝ, <:SpecialEuclidean, <:GeneralLinear}, Any}","page":"Group manifold","title":"ManifoldsBase.embed","text":"embed(M::SpecialEuclideanInGeneralLinear, p)\n\nEmbed the point p on SpecialEuclidean in the GeneralLinear group. The embedding is calculated using affine_matrix.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#ManifoldsBase.project-Tuple{EmbeddedManifold{ℝ, <:SpecialEuclidean, <:GeneralLinear}, Any, Any}","page":"Group manifold","title":"ManifoldsBase.project","text":"project(M::SpecialEuclideanInGeneralLinear, p, X)\n\nProject tangent vector X at point p in GeneralLinear to the SpecialEuclidean Lie algebra. This reverses the transformation performed by embed\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#ManifoldsBase.project-Tuple{EmbeddedManifold{ℝ, <:SpecialEuclidean, <:GeneralLinear}, Any}","page":"Group manifold","title":"ManifoldsBase.project","text":"project(M::SpecialEuclideanInGeneralLinear, p)\n\nProject point p in GeneralLinear to the SpecialEuclidean group. This is performed by extracting the rotation and translation part as in affine_matrix.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Special-linear-group","page":"Group manifold","title":"Special linear group","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Modules = [Manifolds]\nPages = [\"groups/special_linear.jl\"]\nOrder = [:constant, :type, :function]","category":"page"},{"location":"manifolds/group.html#Manifolds.SpecialLinear","page":"Group manifold","title":"Manifolds.SpecialLinear","text":"SpecialLinear{n,𝔽} <: AbstractDecoratorManifold\n\nThe special linear group mathrmSL(n𝔽) that is, the group of all invertible matrices with unit determinant in 𝔽^nn.\n\nThe Lie algebra 𝔰𝔩(n 𝔽) = T_e mathrmSL(n𝔽) is the set of all matrices in 𝔽^nn with trace of zero. By default, tangent vectors X_p T_p mathrmSL(n𝔽) for p mathrmSL(n𝔽) are represented with their corresponding Lie algebra vector X_e = p^-1X_p 𝔰𝔩(n 𝔽).\n\nThe default metric is the same left-mathrmGL(n)-right-mathrmO(n)-invariant metric used for GeneralLinear(n, 𝔽). The resulting geodesic on mathrmGL(n𝔽) emanating from an element of mathrmSL(n𝔽) in the direction of an element of 𝔰𝔩(n 𝔽) is a closed subgroup of mathrmSL(n𝔽). As a result, most metric functions forward to GeneralLinear.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#ManifoldsBase.project-Tuple{SpecialLinear, Any, Any}","page":"Group manifold","title":"ManifoldsBase.project","text":"project(G::SpecialLinear, p, X)\n\nOrthogonally project X 𝔽^n n onto the tangent space of p to the SpecialLinear G = mathrmSL(n 𝔽). The formula reads\n\noperatornameproj_p\n = (mathrmdL_p)_e operatornameproj_𝔰𝔩(n 𝔽) (mathrmdL_p^-1)_p\n colon X X - fracoperatornametr(X)n I\n\nwhere the last expression uses the tangent space representation as the Lie algebra.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#ManifoldsBase.project-Tuple{SpecialLinear, Any}","page":"Group manifold","title":"ManifoldsBase.project","text":"project(G::SpecialLinear, p)\n\nProject p mathrmGL(n 𝔽) to the SpecialLinear group G=mathrmSL(n 𝔽).\n\nGiven the singular value decomposition of p, written p = U S V^mathrmH, the formula for the projection is\n\noperatornameproj_mathrmSL(n 𝔽)(p) = U S D V^mathrmH\n\nwhere\n\nD_ij = δ_ij begincases\n 1 text if i n \n det(p)^-1 text if i = n\nendcases\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Translation-group","page":"Group manifold","title":"Translation group","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Modules = [Manifolds]\nPages = [\"groups/translation_group.jl\"]\nOrder = [:constant, :type, :function]","category":"page"},{"location":"manifolds/group.html#Manifolds.TranslationGroup","page":"Group manifold","title":"Manifolds.TranslationGroup","text":"TranslationGroup{T<:Tuple,𝔽} <: GroupManifold{Euclidean{T,𝔽},AdditionOperation}\n\nTranslation group mathrmT(n) represented by translation arrays.\n\nConstructor\n\nTranslationGroup(n₁,...,nᵢ; field = 𝔽)\n\nGenerate the translation group on 𝔽^n₁nᵢ = Euclidean(n₁,...,nᵢ; field = 𝔽), which is isomorphic to the group itself.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Group-actions","page":"Group manifold","title":"Group actions","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Group actions represent actions of a given group on a specified manifold. The following operations are available:","category":"page"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"apply: performs given action of an element of the group on an object of compatible type.\napply_diff: differential of apply with respect to the object it acts upon.\ndirection: tells whether a given action is LeftForwardAction, RightForwardAction, LeftBackwardAction or RightBackwardAction.\ninverse_apply: performs given action of the inverse of an element of the group on an object of compatible type. By default inverts the element and calls apply but it may be have a faster implementation for some actions.\ninverse_apply_diff: counterpart of apply_diff for inverse_apply.\noptimal_alignment: determine the element of a group that, when it acts upon a point, produces the element closest to another given point in the metric of the G-manifold.","category":"page"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Furthermore, group operation action features the following:","category":"page"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"translate: an operation that performs either left (LeftForwardAction) or right (RightBackwardAction) translation, or actions by inverses of elements (RightForwardAction and LeftBackwardAction). This is by default performed by calling compose with appropriate order of arguments. This function is separated from compose mostly to easily represent its differential, translate_diff.\ntranslate_diff: differential of translate with respect to the point being translated.\nadjoint_action: adjoint action of a given element of a Lie group on an element of its Lie algebra.\nlie_bracket: Lie bracket of two vectors from a Lie algebra corresponding to a given group.","category":"page"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"The following group actions are available:","category":"page"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Group operation action GroupOperationAction that describes action of a group on itself.\nRotationAction, that is action of SpecialOrthogonal group on different manifolds.\nTranslationAction, which is the action of TranslationGroup group on different manifolds.","category":"page"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Modules = [Manifolds]\nPages = [\"groups/group_action.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/group.html#Manifolds.AbstractGroupAction","page":"Group manifold","title":"Manifolds.AbstractGroupAction","text":"AbstractGroupAction\n\nAn abstract group action on a manifold.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.adjoint_apply_diff_group-Tuple{AbstractGroupAction, Any, Any, Any}","page":"Group manifold","title":"Manifolds.adjoint_apply_diff_group","text":"adjoint_apply_diff_group(A::AbstractGroupAction, a, X, p)\n\nPullback with respect to group element of group action A.\n\n(mathrmdτ^p*) T_τ_a p mathcal M T_a mathcal G\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.apply!-Tuple{AbstractGroupAction{LeftForwardAction}, Any, Any, Any}","page":"Group manifold","title":"Manifolds.apply!","text":"apply!(A::AbstractGroupAction, q, a, p)\n\nApply action a to the point p with the rule specified by A. The result is saved in q.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.apply-Tuple{AbstractGroupAction, Any, Any}","page":"Group manifold","title":"Manifolds.apply","text":"apply(A::AbstractGroupAction, a, p)\n\nApply action a to the point p using map τ_a, specified by A. Unless otherwise specified, the right action is defined in terms of the left action:\n\nmathrmR_a = mathrmL_a^-1\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.apply_diff-Tuple{AbstractGroupAction, Any, Any, Any}","page":"Group manifold","title":"Manifolds.apply_diff","text":"apply_diff(A::AbstractGroupAction, a, p, X)\n\nFor point p mathcal M and tangent vector X T_p mathcal M, compute the action on X of the differential of the action of a mathcalG, specified by rule A. Written as (mathrmdτ_a)_p, with the specified left or right convention, the differential transports vectors\n\n(mathrmdτ_a)_p T_p mathcal M T_τ_a p mathcal M\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.apply_diff_group-Tuple{AbstractGroupAction, Any, Any, Any}","page":"Group manifold","title":"Manifolds.apply_diff_group","text":"apply_diff_group(A::AbstractGroupAction, a, X, p)\n\nCompute the value of differential of action AbstractGroupAction A on vector X, where element a is acting on p, with respect to the group element.\n\nLet mathcal G be the group acting on manifold mathcal M by the action A. The action is of element g mathcal G on a point p mathcal M. The differential transforms vector X from the tangent space at a ∈ \\mathcal G, X T_a mathcal G into a tangent space of the manifold mathcal M. When action on element p is written as mathrmdτ^p, with the specified left or right convention, the differential transforms vectors\n\n(mathrmdτ^p) T_a mathcal G T_τ_a p mathcal M\n\nSee also\n\napply, apply_diff\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.base_group-Tuple{AbstractGroupAction}","page":"Group manifold","title":"Manifolds.base_group","text":"base_group(A::AbstractGroupAction)\n\nThe group that acts in action A.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.center_of_orbit","page":"Group manifold","title":"Manifolds.center_of_orbit","text":"center_of_orbit(\n A::AbstractGroupAction,\n pts,\n p,\n mean_method::AbstractEstimationMethod = GradientDescentEstimation(),\n)\n\nCalculate an action element a of action A that is the mean element of the orbit of p with respect to given set of points pts. The mean is calculated using the method mean_method.\n\nThe orbit of p with respect to the action of a group mathcalG is the set\n\nO = τ_a p a mathcalG \n\nThis function is useful for computing means on quotients of manifolds by a Lie group action.\n\n\n\n\n\n","category":"function"},{"location":"manifolds/group.html#Manifolds.direction-Union{Tuple{AbstractGroupAction{AD}}, Tuple{AD}} where AD","page":"Group manifold","title":"Manifolds.direction","text":"direction(::AbstractGroupAction{AD}) -> AD\n\nGet the direction of the action\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.group_manifold-Tuple{AbstractGroupAction}","page":"Group manifold","title":"Manifolds.group_manifold","text":"group_manifold(A::AbstractGroupAction)\n\nThe manifold the action A acts upon.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.inverse_apply!-Tuple{AbstractGroupAction, Any, Any, Any}","page":"Group manifold","title":"Manifolds.inverse_apply!","text":"inverse_apply!(A::AbstractGroupAction, q, a, p)\n\nApply inverse of action a to the point p with the rule specified by A. The result is saved in q.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.inverse_apply-Tuple{AbstractGroupAction, Any, Any}","page":"Group manifold","title":"Manifolds.inverse_apply","text":"inverse_apply(A::AbstractGroupAction, a, p)\n\nApply inverse of action a to the point p. The action is specified by A.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.inverse_apply_diff-Tuple{AbstractGroupAction, Any, Any, Any}","page":"Group manifold","title":"Manifolds.inverse_apply_diff","text":"inverse_apply_diff(A::AbstractGroupAction, a, p, X)\n\nFor group point p mathcal M and tangent vector X T_p mathcal M, compute the action on X of the differential of the inverse action of a mathcalG, specified by rule A. Written as (mathrmdτ_a^-1)_p, with the specified left or right convention, the differential transports vectors\n\n(mathrmdτ_a^-1)_p T_p mathcal M T_τ_a^-1 p mathcal M\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.optimal_alignment!-Tuple{AbstractGroupAction, Any, Any, Any}","page":"Group manifold","title":"Manifolds.optimal_alignment!","text":"optimal_alignment!(A::AbstractGroupAction, x, p, q)\n\nCalculate an action element of action A that acts upon p to produce the element closest to q. The result is written to x.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.optimal_alignment-Tuple{AbstractGroupAction, Any, Any}","page":"Group manifold","title":"Manifolds.optimal_alignment","text":"optimal_alignment(A::AbstractGroupAction, p, q)\n\nCalculate an action element a of action A that acts upon p to produce the element closest to q in the metric of the G-manifold:\n\nargmin_a mathcalG d_mathcal M(τ_a p q)\n\nwhere mathcalG is the group that acts on the G-manifold mathcal M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Group-operation-action","page":"Group manifold","title":"Group operation action","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Modules = [Manifolds]\nPages = [\"groups/group_operation_action.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/group.html#Manifolds.GroupOperationAction","page":"Group manifold","title":"Manifolds.GroupOperationAction","text":"GroupOperationAction(group::AbstractDecoratorManifold, AD::ActionDirection = LeftForwardAction())\n\nAction of a group upon itself via left or right translation.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Rotation-action","page":"Group manifold","title":"Rotation action","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Modules = [Manifolds]\nPages = [\"groups/rotation_action.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/group.html#Manifolds.ColumnwiseMultiplicationAction","page":"Group manifold","title":"Manifolds.ColumnwiseMultiplicationAction","text":"ColumnwiseMultiplicationAction{\n TM<:AbstractManifold,\n TO<:GeneralUnitaryMultiplicationGroup,\n TAD<:ActionDirection,\n} <: AbstractGroupAction{TAD}\n\nAction of the (special) unitary or orthogonal group GeneralUnitaryMultiplicationGroup of type On columns of points on a matrix manifold M.\n\nConstructor\n\nColumnwiseMultiplicationAction(\n M::AbstractManifold,\n On::GeneralUnitaryMultiplicationGroup,\n AD::ActionDirection = LeftForwardAction(),\n)\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.RotationAction","page":"Group manifold","title":"Manifolds.RotationAction","text":"RotationAction(\n M::AbstractManifold,\n SOn::SpecialOrthogonal,\n AD::ActionDirection = LeftForwardAction(),\n)\n\nSpace of actions of the SpecialOrthogonal group mathrmSO(n) on a Euclidean-like manifold M of dimension n.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.RotationAroundAxisAction","page":"Group manifold","title":"Manifolds.RotationAroundAxisAction","text":"RotationAroundAxisAction(axis::AbstractVector)\n\nSpace of actions of the circle group RealCircleGroup on ℝ^3 around given axis.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.RowwiseMultiplicationAction","page":"Group manifold","title":"Manifolds.RowwiseMultiplicationAction","text":"RowwiseMultiplicationAction{\n TM<:AbstractManifold,\n TO<:GeneralUnitaryMultiplicationGroup,\n TAD<:ActionDirection,\n} <: AbstractGroupAction{TAD}\n\nAction of the (special) unitary or orthogonal group GeneralUnitaryMultiplicationGroup of type On columns of points on a matrix manifold M.\n\nConstructor\n\nRowwiseMultiplicationAction(\n M::AbstractManifold,\n On::GeneralUnitaryMultiplicationGroup,\n AD::ActionDirection = LeftForwardAction(),\n)\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.apply-Tuple{Manifolds.RotationAroundAxisAction, Any, Any}","page":"Group manifold","title":"Manifolds.apply","text":"apply(A::RotationAroundAxisAction, θ, p)\n\nRotate point p from Euclidean(3) manifold around axis A.axis by angle θ. The formula reads\n\np_rot = (cos(θ))p + (kp) sin(θ) + k (kp) (1-cos(θ))\n\nwhere k is the vector A.axis and ⋅ is the dot product.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.optimal_alignment-Tuple{Manifolds.ColumnwiseMultiplicationAction{TM, TO, LeftForwardAction} where {TM<:AbstractManifold, TO<:Manifolds.GeneralUnitaryMultiplicationGroup}, Any, Any}","page":"Group manifold","title":"Manifolds.optimal_alignment","text":"optimal_alignment(A::LeftColumnwiseMultiplicationAction, p, q)\n\nCompute optimal alignment for the left ColumnwiseMultiplicationAction, i.e. the group element O^* that, when it acts on p, returns the point closest to q. Details of computation are described in Section 2.2.1 of [SK16].\n\nThe formula reads\n\nO^* = begincases\nUV^T textif operatornamedet(p q^mathrmT)\nU K V^mathrmT textotherwise\nendcases\n\nwhere U Sigma V^mathrmT is the SVD decomposition of p q^mathrmT and K is the unit diagonal matrix with the last element on the diagonal replaced with -1.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Translation-action","page":"Group manifold","title":"Translation action","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Modules = [Manifolds]\nPages = [\"groups/translation_action.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/group.html#Manifolds.TranslationAction","page":"Group manifold","title":"Manifolds.TranslationAction","text":"TranslationAction(\n M::AbstractManifold,\n Rn::TranslationGroup,\n AD::ActionDirection = LeftForwardAction(),\n)\n\nSpace of actions of the TranslationGroup mathrmT(n) on a Euclidean-like manifold M.\n\nThe left and right actions are equivalent.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Metrics-on-groups","page":"Group manifold","title":"Metrics on groups","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Lie groups by default typically forward all metric-related operations like exponential or logarithmic map to the underlying manifold, for example SpecialOrthogonal uses methods for Rotations (which is, incidentally, bi-invariant), or SpecialEuclidean uses product metric of the translation and rotation parts (which is not invariant under group operation).","category":"page"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"It is, however, possible to change the metric used by a group by wrapping it in a MetricManifold decorator.","category":"page"},{"location":"manifolds/group.html#Invariant-metrics","page":"Group manifold","title":"Invariant metrics","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Modules = [Manifolds]\nPages = [\"groups/metric.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/group.html#Manifolds.LeftInvariantMetric","page":"Group manifold","title":"Manifolds.LeftInvariantMetric","text":"LeftInvariantMetric <: AbstractMetric\n\nAn AbstractMetric that changes the metric of a Lie group to the left-invariant metric obtained by left-translations to the identity. Adds the HasLeftInvariantMetric trait.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.RightInvariantMetric","page":"Group manifold","title":"Manifolds.RightInvariantMetric","text":"RightInvariantMetric <: AbstractMetric\n\nAn AbstractMetric that changes the metric of a Lie group to the right-invariant metric obtained by right-translations to the identity. Adds the HasRightInvariantMetric trait.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.direction-Tuple{AbstractDecoratorManifold}","page":"Group manifold","title":"Manifolds.direction","text":"direction(::AbstractDecoratorManifold) -> AD\n\nGet the direction of the action a certain Lie group with its implicit metric has\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Manifolds.has_approx_invariant_metric-Tuple{AbstractDecoratorManifold, Any, Any, Any, Any, ActionDirection}","page":"Group manifold","title":"Manifolds.has_approx_invariant_metric","text":"has_approx_invariant_metric(\n G::AbstractDecoratorManifold,\n p,\n X,\n Y,\n qs::AbstractVector,\n conv::ActionDirection = LeftForwardAction();\n kwargs...,\n) -> Bool\n\nCheck whether the metric on the group mathcalG is (approximately) invariant using a set of predefined points. Namely, for p mathcalG, XY T_p mathcalG, a metric g, and a translation map τ_q in the specified direction, check for each q mathcalG that the following condition holds:\n\ng_p(X Y) g_τ_q p((mathrmdτ_q)_p X (mathrmdτ_q)_p Y)\n\nThis is necessary but not sufficient for invariance.\n\nOptionally, kwargs passed to isapprox may be provided.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Cartan-Schouten-connections","page":"Group manifold","title":"Cartan-Schouten connections","text":"","category":"section"},{"location":"manifolds/group.html","page":"Group manifold","title":"Group manifold","text":"Modules = [Manifolds]\nPages = [\"groups/connections.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/group.html#Manifolds.AbstractCartanSchoutenConnection","page":"Group manifold","title":"Manifolds.AbstractCartanSchoutenConnection","text":"AbstractCartanSchoutenConnection\n\nAbstract type for Cartan-Schouten connections, that is connections whose geodesics going through group identity are one-parameter subgroups. See [PL20] for details.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.CartanSchoutenMinus","page":"Group manifold","title":"Manifolds.CartanSchoutenMinus","text":"CartanSchoutenMinus\n\nThe unique Cartan-Schouten connection such that all left-invariant vector fields are globally defined by their value at identity. It is biinvariant with respect to the group operation.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.CartanSchoutenPlus","page":"Group manifold","title":"Manifolds.CartanSchoutenPlus","text":"CartanSchoutenPlus\n\nThe unique Cartan-Schouten connection such that all right-invariant vector fields are globally defined by their value at identity. It is biinvariant with respect to the group operation.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Manifolds.CartanSchoutenZero","page":"Group manifold","title":"Manifolds.CartanSchoutenZero","text":"CartanSchoutenZero\n\nThe unique torsion-free Cartan-Schouten connection. It is biinvariant with respect to the group operation.\n\nIf the metric on the underlying manifold is bi-invariant then it is equivalent to the Levi-Civita connection of that metric.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/group.html#Base.exp-Union{Tuple{𝔽}, Tuple{ConnectionManifold{𝔽, <:AbstractDecoratorManifold{𝔽}, <:AbstractCartanSchoutenConnection}, Any, Any}} where 𝔽","page":"Group manifold","title":"Base.exp","text":"exp(M::ConnectionManifold{𝔽,<:AbstractDecoratorManifold{𝔽},<:AbstractCartanSchoutenConnection}, p, X) where {𝔽}\n\nCompute the exponential map on the ConnectionManifold M with a Cartan-Schouten connection. See Sections 5.3.2 and 5.3.3 of [PL20] for details.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#Base.log-Union{Tuple{𝔽}, Tuple{ConnectionManifold{𝔽, <:AbstractDecoratorManifold{𝔽}, <:AbstractCartanSchoutenConnection}, Any, Any}} where 𝔽","page":"Group manifold","title":"Base.log","text":"log(M::ConnectionManifold{𝔽,<:AbstractDecoratorManifold{𝔽},<:AbstractCartanSchoutenConnection}, p, q) where {𝔽}\n\nCompute the logarithmic map on the ConnectionManifold M with a Cartan-Schouten connection. See Sections 5.3.2 and 5.3.3 of [PL20] for details.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#ManifoldsBase.parallel_transport_direction-Tuple{ConnectionManifold{𝔽, M, CartanSchoutenZero} where {𝔽, M}, Identity, Any, Any}","page":"Group manifold","title":"ManifoldsBase.parallel_transport_direction","text":"parallel_transport_direction(M::CartanSchoutenZeroGroup, ::Identity, X, d)\n\nTransport tangent vector X at identity on the group manifold with the CartanSchoutenZero connection in the direction d. See [PL20] for details.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#ManifoldsBase.parallel_transport_to-Tuple{ConnectionManifold{𝔽, M, CartanSchoutenMinus} where {𝔽, M}, Any, Any, Any}","page":"Group manifold","title":"ManifoldsBase.parallel_transport_to","text":"parallel_transport_to(M::CartanSchoutenMinusGroup, p, X, q)\n\nTransport tangent vector X at point p on the group manifold M with the CartanSchoutenMinus connection to point q. See [PL20] for details.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#ManifoldsBase.parallel_transport_to-Tuple{ConnectionManifold{𝔽, M, CartanSchoutenPlus} where {𝔽, M}, Any, Any, Any}","page":"Group manifold","title":"ManifoldsBase.parallel_transport_to","text":"vector_transport_to(M::CartanSchoutenPlusGroup, p, X, q)\n\nTransport tangent vector X at point p on the group manifold M with the CartanSchoutenPlus connection to point q. See [PL20] for details.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/group.html#ManifoldsBase.parallel_transport_to-Tuple{ConnectionManifold{𝔽, M, CartanSchoutenZero} where {𝔽, M}, Identity, Any, Any}","page":"Group manifold","title":"ManifoldsBase.parallel_transport_to","text":"parallel_transport_to(M::CartanSchoutenZeroGroup, p::Identity, X, q)\n\nTransport vector X at identity of group M equipped with the CartanSchoutenZero connection to point q using parallel transport.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/metric.html#Metric-manifold","page":"Metric manifold","title":"Metric manifold","text":"","category":"section"},{"location":"manifolds/metric.html","page":"Metric manifold","title":"Metric manifold","text":"A Riemannian manifold always consists of a topological manifold together with a smoothly varying metric g.","category":"page"},{"location":"manifolds/metric.html","page":"Metric manifold","title":"Metric manifold","text":"However, often there is an implicitly assumed (default) metric, like the usual inner product on Euclidean space. This decorator takes this into account. It is not necessary to use this decorator if you implement just one (or the first) metric. If you later introduce a second, the old (first) metric can be used with the (non MetricManifold) AbstractManifold, i.e. without an explicitly stated metric.","category":"page"},{"location":"manifolds/metric.html","page":"Metric manifold","title":"Metric manifold","text":"This manifold decorator serves two purposes:","category":"page"},{"location":"manifolds/metric.html","page":"Metric manifold","title":"Metric manifold","text":"to implement different metrics (e.g. in closed form) for one AbstractManifold\nto provide a way to compute geodesics on manifolds, where this AbstractMetric does not yield closed formula.","category":"page"},{"location":"manifolds/metric.html","page":"Metric manifold","title":"Metric manifold","text":"Pages = [\"metric.md\"]\nDepth = 2","category":"page"},{"location":"manifolds/metric.html","page":"Metric manifold","title":"Metric manifold","text":"Note that a metric manifold is has a IsConnectionManifold trait referring to the LeviCivitaConnection of the metric g, and thus a large part of metric manifold's functionality relies on this.","category":"page"},{"location":"manifolds/metric.html","page":"Metric manifold","title":"Metric manifold","text":"Let's first look at the provided types.","category":"page"},{"location":"manifolds/metric.html#Types","page":"Metric manifold","title":"Types","text":"","category":"section"},{"location":"manifolds/metric.html","page":"Metric manifold","title":"Metric manifold","text":"Modules = [Manifolds, ManifoldsBase]\nPages = [\"manifolds/MetricManifold.jl\"]\nOrder = [:type]","category":"page"},{"location":"manifolds/metric.html#Manifolds.IsDefaultMetric","page":"Metric manifold","title":"Manifolds.IsDefaultMetric","text":"IsDefaultMetric{G<:AbstractMetric}\n\nSpecify that a certain AbstractMetric is the default metric for a manifold. This way the corresponding MetricManifold falls back to the default methods of the manifold it decorates.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/metric.html#Manifolds.IsMetricManifold","page":"Metric manifold","title":"Manifolds.IsMetricManifold","text":"IsMetricManifold <: AbstractTrait\n\nSpecify that a certain decorated Manifold is a metric manifold in the sence that it provides explicit metric properties, extending/changing the default metric properties of a manifold.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/metric.html#Manifolds.MetricManifold","page":"Metric manifold","title":"Manifolds.MetricManifold","text":"MetricManifold{𝔽,M<:AbstractManifold{𝔽},G<:AbstractMetric} <: AbstractDecoratorManifold{𝔽}\n\nEquip a AbstractManifold explicitly with an AbstractMetric G.\n\nFor a Metric AbstractManifold, by default, assumes, that you implement the linear form from local_metric in order to evaluate the exponential map.\n\nIf the corresponding AbstractMetric G yields closed form formulae for e.g. the exponential map and this is implemented directly (without solving the ode), you can of course still implement that directly.\n\nConstructor\n\nMetricManifold(M, G)\n\nGenerate the AbstractManifold M as a manifold with the AbstractMetric G.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/metric.html#Implement-Different-Metrics-on-the-same-Manifold","page":"Metric manifold","title":"Implement Different Metrics on the same Manifold","text":"","category":"section"},{"location":"manifolds/metric.html","page":"Metric manifold","title":"Metric manifold","text":"In order to distinguish different metrics on one manifold, one can introduce two AbstractMetrics and use this type to dispatch on the metric, see SymmetricPositiveDefinite. To avoid overhead, one AbstractMetric can then be marked as being the default, i.e. the one that is used, when no MetricManifold decorator is present. This avoids reimplementation of the first existing metric, access to the metric-dependent functions that were implemented using the undecorated manifold, as well as the transparent fallback of the corresponding MetricManifold with default metric to the undecorated implementations. This does not cause any runtime overhead. Introducing a default AbstractMetric serves a better readability of the code when working with different metrics.","category":"page"},{"location":"manifolds/metric.html#Implementation-of-Metrics","page":"Metric manifold","title":"Implementation of Metrics","text":"","category":"section"},{"location":"manifolds/metric.html","page":"Metric manifold","title":"Metric manifold","text":"For the case that a local_metric is implemented as a bilinear form that is positive definite, the following further functions are provided, unless the corresponding AbstractMetric is marked as default – then the fallbacks mentioned in the last section are used for e.g. the exponential map.","category":"page"},{"location":"manifolds/metric.html","page":"Metric manifold","title":"Metric manifold","text":"Modules = [Manifolds, ManifoldsBase]\nPages = [\"manifolds/MetricManifold.jl\"]\nOrder = [:function]","category":"page"},{"location":"manifolds/metric.html#Base.log-Tuple{MetricManifold, Vararg{Any}}","page":"Metric manifold","title":"Base.log","text":"log(N::MetricManifold{M,G}, p, q)\n\nCopute the logarithmic map on the AbstractManifold M equipped with the AbstractMetric G.\n\nIf the metric was declared the default metric using the IsDefaultMetric trait or is_default_metric, this method falls back to log(M,p,q). Otherwise, you have to provide an implementation for the non-default AbstractMetric G metric within its MetricManifold{M,G}.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/metric.html#Manifolds.connection-Tuple{MetricManifold}","page":"Metric manifold","title":"Manifolds.connection","text":"connection(::MetricManifold)\n\nReturn the LeviCivitaConnection for a metric manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/metric.html#Manifolds.det_local_metric-Tuple{AbstractManifold, Any, AbstractBasis}","page":"Metric manifold","title":"Manifolds.det_local_metric","text":"det_local_metric(M::AbstractManifold, p, B::AbstractBasis)\n\nReturn the determinant of local matrix representation of the metric tensor g, i.e. of the matrix G(p) representing the metric in the tangent space at p with as a matrix.\n\nSee also local_metric\n\n\n\n\n\n","category":"method"},{"location":"manifolds/metric.html#Manifolds.einstein_tensor-Tuple{AbstractManifold, Any, AbstractBasis}","page":"Metric manifold","title":"Manifolds.einstein_tensor","text":"einstein_tensor(M::AbstractManifold, p, B::AbstractBasis; backend::AbstractDiffBackend = diff_badefault_differential_backendckend())\n\nCompute the Einstein tensor of the manifold M at the point p, see https://en.wikipedia.org/wiki/Einstein_tensor\n\n\n\n\n\n","category":"method"},{"location":"manifolds/metric.html#Manifolds.flat-Tuple{MetricManifold, Any, TFVector}","page":"Metric manifold","title":"Manifolds.flat","text":"flat(N::MetricManifold{M,G}, p, X::TFVector)\n\nCompute the musical isomorphism to transform the tangent vector X from the AbstractManifold M equipped with AbstractMetric G to a cotangent by computing\n\nX^= G_p X\n\nwhere G_p is the local matrix representation of G, see local_metric\n\n\n\n\n\n","category":"method"},{"location":"manifolds/metric.html#Manifolds.inverse_local_metric-Tuple{AbstractManifold, Any, AbstractBasis}","page":"Metric manifold","title":"Manifolds.inverse_local_metric","text":"inverse_local_metric(M::AbstractcManifold{𝔽}, p, B::AbstractBasis)\n\nReturn the local matrix representation of the inverse metric (cometric) tensor of the tangent space at p on the AbstractManifold M with respect to the AbstractBasis basis B.\n\nThe metric tensor (see local_metric) is usually denoted by G = (g_ij) 𝔽^dd, where d is the dimension of the manifold.\n\nThen the inverse local metric is denoted by G^-1 = g^ij.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/metric.html#Manifolds.is_default_metric-Tuple{AbstractManifold, AbstractMetric}","page":"Metric manifold","title":"Manifolds.is_default_metric","text":"is_default_metric(M::AbstractManifold, G::AbstractMetric)\n\nreturns whether an AbstractMetric is the default metric on the manifold M or not. This can be set by defining this function, or setting the IsDefaultMetric trait for an AbstractDecoratorManifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/metric.html#Manifolds.local_metric-Tuple{AbstractManifold, Any, AbstractBasis}","page":"Metric manifold","title":"Manifolds.local_metric","text":"local_metric(M::AbstractManifold{𝔽}, p, B::AbstractBasis)\n\nReturn the local matrix representation at the point p of the metric tensor g with respect to the AbstractBasis B on the AbstractManifold M. Let ddenote the dimension of the manifold and b_1ldotsb_d the basis vectors. Then the local matrix representation is a matrix Gin 𝔽^ntimes n whose entries are given by g_ij = g_p(b_ib_j) ijin1d.\n\nThis yields the property for two tangent vectors (using Einstein summation convention) X = X^ib_i Y=Y^ib_i in T_pmathcal M we get g_p(X Y) = g_ij X^i Y^j.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/metric.html#Manifolds.local_metric_jacobian-Tuple{AbstractManifold, Any, AbstractBasis, ManifoldDiff.AbstractDiffBackend}","page":"Metric manifold","title":"Manifolds.local_metric_jacobian","text":"local_metric_jacobian(\n M::AbstractManifold,\n p,\n B::AbstractBasis;\n backend::AbstractDiffBackend,\n)\n\nGet partial derivatives of the local metric of M at p in basis B with respect to the coordinates of p, frac p^k g_ij = g_ijk. The dimensions of the resulting multi-dimensional array are ordered (ijk).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/metric.html#Manifolds.log_local_metric_density-Tuple{AbstractManifold, Any, AbstractBasis}","page":"Metric manifold","title":"Manifolds.log_local_metric_density","text":"log_local_metric_density(M::AbstractManifold, p, B::AbstractBasis)\n\nReturn the natural logarithm of the metric density ρ of M at p, which is given by ρ = log sqrtdet g_ij for the metric tensor expressed in basis B.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/metric.html#Manifolds.metric-Tuple{MetricManifold}","page":"Metric manifold","title":"Manifolds.metric","text":"metric(M::MetricManifold)\n\nGet the metric g of the manifold M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/metric.html#Manifolds.ricci_curvature-Tuple{AbstractManifold, Any, AbstractBasis}","page":"Metric manifold","title":"Manifolds.ricci_curvature","text":"ricci_curvature(M::AbstractManifold, p, B::AbstractBasis; backend::AbstractDiffBackend = default_differential_backend())\n\nCompute the Ricci scalar curvature of the manifold M at the point p using basis B. The curvature is computed as the trace of the Ricci curvature tensor with respect to the metric, that is R=g^ijR_ij where R is the scalar Ricci curvature at p, g^ij is the inverse local metric (see inverse_local_metric) at p and R_ij is the Riccie curvature tensor, see ricci_tensor. Both the tensor and inverse local metric are expressed in local coordinates defined by B, and the formula uses the Einstein summation convention.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/metric.html#Manifolds.sharp-Tuple{MetricManifold, Any, CoTFVector}","page":"Metric manifold","title":"Manifolds.sharp","text":"sharp(N::MetricManifold{M,G}, p, ξ::CoTFVector)\n\nCompute the musical isomorphism to transform the cotangent vector ξ from the AbstractManifold M equipped with AbstractMetric G to a tangent by computing\n\nξ^ = G_p^-1 ξ\n\nwhere G_p is the local matrix representation of G, i.e. one employs inverse_local_metric here to obtain G_p^-1.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/metric.html#ManifoldsBase.inner-Tuple{MetricManifold, Any, Any, Any}","page":"Metric manifold","title":"ManifoldsBase.inner","text":"inner(N::MetricManifold{M,G}, p, X, Y)\n\nCompute the inner product of X and Y from the tangent space at p on the AbstractManifold M using the AbstractMetric G. If M has G as its IsDefaultMetric trait, this is done using inner(M, p, X, Y), otherwise the local_metric(M, p) is employed as\n\ng_p(X Y) = X G_p Y\n\nwhere G_p is the loal matrix representation of the AbstractMetric G.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/metric.html#Metrics,-charts-and-bases-of-vector-spaces","page":"Metric manifold","title":"Metrics, charts and bases of vector spaces","text":"","category":"section"},{"location":"manifolds/metric.html","page":"Metric manifold","title":"Metric manifold","text":"Metric-related functions, similarly to connection-related functions, need to operate in a basis of a vector space, see here.","category":"page"},{"location":"manifolds/metric.html","page":"Metric manifold","title":"Metric manifold","text":"Metric-related functions can take bases of associated tangent spaces as arguments. For example local_metric can take the basis of the tangent space it is supposed to operate on instead of a custom basis of the space of symmetric bilinear operators.","category":"page"},{"location":"manifolds/symmetric.html#Symmetric-matrices","page":"Symmetric matrices","title":"Symmetric matrices","text":"","category":"section"},{"location":"manifolds/symmetric.html","page":"Symmetric matrices","title":"Symmetric matrices","text":"Modules = [Manifolds]\nPages = [\"manifolds/Symmetric.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/symmetric.html#Manifolds.SymmetricMatrices","page":"Symmetric matrices","title":"Manifolds.SymmetricMatrices","text":"SymmetricMatrices{n,𝔽} <: AbstractDecoratorManifold{𝔽}\n\nThe AbstractManifold $ \\operatorname{Sym}(n)$ consisting of the real- or complex-valued symmetric matrices of size n n, i.e. the set\n\noperatornameSym(n) = biglp 𝔽^n n big p^mathrmH = p bigr\n\nwhere cdot^mathrmH denotes the Hermitian, i.e. complex conjugate transpose, and the field 𝔽 ℝ ℂ.\n\nThough it is slightly redundant, usually the matrices are stored as n n arrays.\n\nNote that in this representation, the complex valued case has to have a real-valued diagonal, which is also reflected in the manifold_dimension.\n\nConstructor\n\nSymmetricMatrices(n::Int, field::AbstractNumbers=ℝ)\n\nGenerate the manifold of n n symmetric matrices.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/symmetric.html#ManifoldsBase.Weingarten-Tuple{SymmetricMatrices, Any, Any, Any}","page":"Symmetric matrices","title":"ManifoldsBase.Weingarten","text":"Y = Weingarten(M::SymmetricMatrices, p, X, V)\nWeingarten!(M::SymmetricMatrices, Y, p, X, V)\n\nCompute the Weingarten map mathcal W_p at p on the SymmetricMatrices M with respect to the tangent vector X in T_pmathcal M and the normal vector V in N_pmathcal M.\n\nSince this a flat space by itself, the result is always the zero tangent vector.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetric.html#ManifoldsBase.check_point-Union{Tuple{𝔽}, Tuple{n}, Tuple{SymmetricMatrices{n, 𝔽}, Any}} where {n, 𝔽}","page":"Symmetric matrices","title":"ManifoldsBase.check_point","text":"check_point(M::SymmetricMatrices{n,𝔽}, p; kwargs...)\n\nCheck whether p is a valid manifold point on the SymmetricMatrices M, i.e. whether p is a symmetric matrix of size (n,n) with values from the corresponding AbstractNumbers 𝔽.\n\nThe tolerance for the symmetry of p can be set using kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetric.html#ManifoldsBase.check_vector-Union{Tuple{𝔽}, Tuple{n}, Tuple{SymmetricMatrices{n, 𝔽}, Any, Any}} where {n, 𝔽}","page":"Symmetric matrices","title":"ManifoldsBase.check_vector","text":"check_vector(M::SymmetricMatrices{n,𝔽}, p, X; kwargs... )\n\nCheck whether X is a tangent vector to manifold point p on the SymmetricMatrices M, i.e. X has to be a symmetric matrix of size (n,n) and its values have to be from the correct AbstractNumbers.\n\nThe tolerance for the symmetry of X can be set using kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetric.html#ManifoldsBase.is_flat-Tuple{SymmetricMatrices}","page":"Symmetric matrices","title":"ManifoldsBase.is_flat","text":"is_flat(::SymmetricMatrices)\n\nReturn true. SymmetricMatrices is a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetric.html#ManifoldsBase.manifold_dimension-Union{Tuple{SymmetricMatrices{N, 𝔽}}, Tuple{𝔽}, Tuple{N}} where {N, 𝔽}","page":"Symmetric matrices","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::SymmetricMatrices{n,𝔽})\n\nReturn the dimension of the SymmetricMatrices matrix M over the number system 𝔽, i.e.\n\nbeginaligned\ndim mathrmSym(nℝ) = fracn(n+1)2\ndim mathrmSym(nℂ) = 2fracn(n+1)2 - n = n^2\nendaligned\n\nwhere the last -n is due to the zero imaginary part for Hermitian matrices\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetric.html#ManifoldsBase.project-Tuple{SymmetricMatrices, Any, Any}","page":"Symmetric matrices","title":"ManifoldsBase.project","text":"project(M::SymmetricMatrices, p, X)\n\nProject the matrix X onto the tangent space at p on the SymmetricMatrices M,\n\noperatornameproj_p(X) = frac12 bigl( X + X^mathrmH bigr)\n\nwhere cdot^mathrmH denotes the Hermitian, i.e. complex conjugate transposed.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetric.html#ManifoldsBase.project-Tuple{SymmetricMatrices, Any}","page":"Symmetric matrices","title":"ManifoldsBase.project","text":"project(M::SymmetricMatrices, p)\n\nProjects p from the embedding onto the SymmetricMatrices M, i.e.\n\noperatornameproj_operatornameSym(n)(p) = frac12 bigl( p + p^mathrmH bigr)\n\nwhere cdot^mathrmH denotes the Hermitian, i.e. complex conjugate transposed.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#Grassmannian-manifold","page":"Grassmann","title":"Grassmannian manifold","text":"","category":"section"},{"location":"manifolds/grassmann.html","page":"Grassmann","title":"Grassmann","text":"Modules = [Manifolds]\nPages = [\"manifolds/Grassmann.jl\"]\nOrder = [:type,:function]","category":"page"},{"location":"manifolds/grassmann.html#Manifolds.Grassmann","page":"Grassmann","title":"Manifolds.Grassmann","text":"Grassmann{n,k,𝔽} <: AbstractDecoratorManifold{𝔽}\n\nThe Grassmann manifold operatornameGr(nk) consists of all subspaces spanned by k linear independent vectors 𝔽^n, where 𝔽 ℝ ℂ is either the real- (or complex-) valued vectors. This yields all k-dimensional subspaces of ℝ^n for the real-valued case and all 2k-dimensional subspaces of ℂ^n for the second.\n\nThe manifold can be represented as\n\noperatornameGr(nk) = bigl operatornamespan(p) p 𝔽^n k p^mathrmHp = I_k\n\nwhere cdot^mathrmH denotes the complex conjugate transpose or Hermitian and I_k is the k k identity matrix. This means, that the columns of p form an unitary basis of the subspace, that is a point on operatornameGr(nk), and hence the subspace can actually be represented by a whole equivalence class of representers. Another interpretation is, that\n\noperatornameGr(nk) = operatornameSt(nk) operatornameO(k)\n\ni.e the Grassmann manifold is the quotient of the Stiefel manifold and the orthogonal group operatornameO(k) of orthogonal k k matrices. Note that it doesn't matter whether we start from the Euclidean or canonical metric on the Stiefel manifold, the resulting quotient metric on Grassmann is the same.\n\nThe tangent space at a point (subspace) p is given by\n\nT_pmathrmGr(nk) = bigl\nX 𝔽^n k \nX^mathrmHp + p^mathrmHX = 0_k bigr\n\nwhere 0_k is the k k zero matrix.\n\nNote that a point p operatornameGr(nk) might be represented by different matrices (i.e. matrices with unitary column vectors that span the same subspace). Different representations of p also lead to different representation matrices for the tangent space T_pmathrmGr(nk)\n\nFor a representation of points as orthogonal projectors. Here\n\noperatornameGr(nk) = bigl p in mathbb R^nn p = p^mathrmT p^2 = p operatornamerank(p) = k\n\nwith tangent space\n\nT_pmathrmGr(nk) = bigl\nX mathbb R^n n X=X^mathrmT text and X = pX+Xp bigr\n\nsee also ProjectorPoint and ProjectorTVector.\n\nThe manifold is named after Hermann G. Graßmann (1809-1877).\n\nA good overview can be found in[BZA20].\n\nConstructor\n\nGrassmann(n,k,field=ℝ)\n\nGenerate the Grassmann manifold operatornameGr(nk), where the real-valued case field = ℝ is the default.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/grassmann.html#Base.convert-Tuple{Type{ProjectorPoint}, AbstractMatrix}","page":"Grassmann","title":"Base.convert","text":"convert(::Type{ProjectorPoint}, p::AbstractMatrix)\n\nConvert a point p on Stiefel that also represents a point (i.e. subspace) on Grassmann to a projector representation of said subspace, i.e. compute the canonical_project! for\n\n π^mathrmSG(p) = pp^mathrmT)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#Base.convert-Tuple{Type{ProjectorPoint}, StiefelPoint}","page":"Grassmann","title":"Base.convert","text":"convert(::Type{ProjectorPoint}, ::Stiefelpoint)\n\nConvert a point p on Stiefel that also represents a point (i.e. subspace) on Grassmann to a projector representation of said subspace, i.e. compute the canonical_project! for\n\n π^mathrmSG(p) = pp^mathrmT\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#Manifolds.get_total_space-Union{Tuple{Grassmann{n, k, 𝔽}}, Tuple{𝔽}, Tuple{k}, Tuple{n}} where {n, k, 𝔽}","page":"Grassmann","title":"Manifolds.get_total_space","text":"get_total_space(::Grassmann{n,k})\n\nReturn the total space of the Grassmann manifold, which is the corresponding Stiefel manifold, independent of whether the points are represented already in the total space or as ProjectorPoints.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.change_metric-Tuple{Grassmann, EuclideanMetric, Any, Any}","page":"Grassmann","title":"ManifoldsBase.change_metric","text":"change_metric(M::Grassmann, ::EuclideanMetric, p X)\n\nChange X to the corresponding vector with respect to the metric of the Grassmann M, which is just the identity, since the manifold is isometrically embedded.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.change_representer-Tuple{Grassmann, EuclideanMetric, Any, Any}","page":"Grassmann","title":"ManifoldsBase.change_representer","text":"change_representer(M::Grassmann, ::EuclideanMetric, p, X)\n\nChange X to the corresponding representer of a cotangent vector at p. Since the Grassmann manifold M, is isometrically embedded, this is the identity\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.default_retraction_method-Tuple{Grassmann, Type{ProjectorPoint}}","page":"Grassmann","title":"ManifoldsBase.default_retraction_method","text":"default_retraction_method(M::Grassmann, ::Type{ProjectorPoint})\n\nReturn ExponentialRetraction as the default on the Grassmann manifold with projection matrices\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.default_retraction_method-Tuple{Grassmann}","page":"Grassmann","title":"ManifoldsBase.default_retraction_method","text":"default_retraction_method(M::Grassmann)\ndefault_retraction_method(M::Grassmann, ::Type{StiefelPoint})\n\nReturn PolarRetracion as the default on the Grassmann manifold with projection matrices\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.default_vector_transport_method-Tuple{Grassmann}","page":"Grassmann","title":"ManifoldsBase.default_vector_transport_method","text":"default_vector_transport_method(M::Grassmann)\n\nReturn the ProjectionTransport as the default vector transport method for the Grassmann manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.injectivity_radius-Tuple{Grassmann}","page":"Grassmann","title":"ManifoldsBase.injectivity_radius","text":"injectivity_radius(M::Grassmann)\ninjectivity_radius(M::Grassmann, p)\n\nReturn the injectivity radius on the Grassmann M, which is fracπ2.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.is_flat-Tuple{Grassmann}","page":"Grassmann","title":"ManifoldsBase.is_flat","text":"is_flat(M::Grassmann)\n\nReturn true if Grassmann M is one-dimensional.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.manifold_dimension-Union{Tuple{Grassmann{n, k, 𝔽}}, Tuple{𝔽}, Tuple{k}, Tuple{n}} where {n, k, 𝔽}","page":"Grassmann","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::Grassmann)\n\nReturn the dimension of the Grassmann(n,k,𝔽) manifold M, i.e.\n\ndim operatornameGr(nk) = k(n-k) dim_ℝ 𝔽\n\nwhere dim_ℝ 𝔽 is the real_dimension of 𝔽.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#Statistics.mean-Tuple{Grassmann, Vararg{Any}}","page":"Grassmann","title":"Statistics.mean","text":"mean(\n M::Grassmann,\n x::AbstractVector,\n [w::AbstractWeights,]\n method = GeodesicInterpolationWithinRadius(π/4);\n kwargs...,\n)\n\nCompute the Riemannian mean of x using GeodesicInterpolationWithinRadius.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#The-Grassmanian-represented-as-points-on-the-[Stiefel](@ref)-manifold","page":"Grassmann","title":"The Grassmanian represented as points on the Stiefel manifold","text":"","category":"section"},{"location":"manifolds/grassmann.html","page":"Grassmann","title":"Grassmann","text":"Modules = [Manifolds]\nPages = [\"manifolds/GrassmannStiefel.jl\"]\nOrder = [:type,:function]","category":"page"},{"location":"manifolds/grassmann.html#Manifolds.StiefelPoint","page":"Grassmann","title":"Manifolds.StiefelPoint","text":"StiefelPoint <: AbstractManifoldPoint\n\nA point on a Stiefel manifold. This point is mainly used for representing points on the Grassmann where this is also the default representation and hence equivalent to using AbstractMatrices thereon. they can also used be used as points on Stiefel.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/grassmann.html#Manifolds.StiefelTVector","page":"Grassmann","title":"Manifolds.StiefelTVector","text":"StiefelTVector <: TVector\n\nA tangent vector on the Grassmann manifold represented by a tangent vector from the tangent space of a corresponding point from the Stiefel manifold, see StiefelPoint. This is the default representation so is can be used interchangeably with just abstract matrices.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/grassmann.html#Base.exp-Tuple{Grassmann, Vararg{Any}}","page":"Grassmann","title":"Base.exp","text":"exp(M::Grassmann, p, X)\n\nCompute the exponential map on the Grassmann M= mathrmGr(nk) starting in p with tangent vector (direction) X. Let X = USV denote the SVD decomposition of X. Then the exponential map is written using\n\nz = p Vcos(S)V^mathrmH + Usin(S)V^mathrmH\n\nwhere cdot^mathrmH denotes the complex conjugate transposed or Hermitian and the cosine and sine are applied element wise to the diagonal entries of S. A final QR decomposition z=QR is performed for numerical stability reasons, yielding the result as\n\nexp_p X = Q\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#Base.log-Tuple{Grassmann, Vararg{Any}}","page":"Grassmann","title":"Base.log","text":"log(M::Grassmann, p, q)\n\nCompute the logarithmic map on the Grassmann M$ = \\mathcal M=\\mathrm{Gr}(n,k)$, i.e. the tangent vector X whose corresponding geodesic starting from p reaches q after time 1 on M. The formula reads\n\nlog_p q = Vcdot operatornameatan(S) cdot U^mathrmH\n\nwhere cdot^mathrmH denotes the complex conjugate transposed or Hermitian. The matrices U and V are the unitary matrices, and S is the diagonal matrix containing the singular values of the SVD-decomposition\n\nUSV = (q^mathrmHp)^-1 ( q^mathrmH - q^mathrmHpp^mathrmH)\n\nIn this formula the operatornameatan is meant elementwise.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#Base.rand-Tuple{Grassmann}","page":"Grassmann","title":"Base.rand","text":"rand(M::Grassmann; σ::Real=1.0, vector_at=nothing)\n\nWhen vector_at is nothing, return a random point p on Grassmann manifold M by generating a random (Gaussian) matrix with standard deviation σ in matching size, which is orthonormal.\n\nWhen vector_at is not nothing, return a (Gaussian) random vector from the tangent space T_pmathrmGr(nk) with mean zero and standard deviation σ by projecting a random Matrix onto the tangent space at vector_at.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldDiff.riemannian_Hessian-Tuple{Grassmann, Vararg{Any, 4}}","page":"Grassmann","title":"ManifoldDiff.riemannian_Hessian","text":"riemannian_Hessian(M::Grassmann, p, G, H, X)\n\nThe Riemannian Hessian can be computed by adopting Eq. (6.6) [Ngu23], where we use for the EuclideanMetric α_0=α_1=1 in their formula. Let nabla f(p) denote the Euclidean gradient G, nabla^2 f(p)X the Euclidean Hessian H. Then the formula reads\n\n operatornameHessf(p)X\n =\n operatornameproj_T_pmathcal MBigl(\n ^2f(p)X - X p^mathrmHf(p)\n Bigr)\n\nCompared to Eq. (5.6) also the metric conversion simplifies to the identity.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#Manifolds.uniform_distribution-Union{Tuple{k}, Tuple{n}, Tuple{Grassmann{n, k, ℝ}, Any}} where {n, k}","page":"Grassmann","title":"Manifolds.uniform_distribution","text":"uniform_distribution(M::Grassmann{n,k,ℝ}, p)\n\nUniform distribution on given (real-valued) Grassmann M. Specifically, this is the normalized Haar measure on M. Generated points will be of similar type as p.\n\nThe implementation is based on Section 2.5.1 in [Chi03]; see also Theorem 2.2.2(iii) in [Chi03].\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.distance-Tuple{Grassmann, Any, Any}","page":"Grassmann","title":"ManifoldsBase.distance","text":"distance(M::Grassmann, p, q)\n\nCompute the Riemannian distance on Grassmann manifold M= mathrmGr(nk).\n\nThe distance is given by\n\nd_mathrmGr(nk)(pq) = operatornamenorm(log_p(q))\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.inner-Tuple{Grassmann, Any, Any, Any}","page":"Grassmann","title":"ManifoldsBase.inner","text":"inner(M::Grassmann, p, X, Y)\n\nCompute the inner product for two tangent vectors X, Y from the tangent space of p on the Grassmann manifold M. The formula reads\n\ng_p(XY) = operatornametr(X^mathrmHY)\n\nwhere cdot^mathrmH denotes the complex conjugate transposed or Hermitian.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.inverse_retract-Tuple{Grassmann, Any, Any, PolarInverseRetraction}","page":"Grassmann","title":"ManifoldsBase.inverse_retract","text":"inverse_retract(M::Grassmann, p, q, ::PolarInverseRetraction)\n\nCompute the inverse retraction for the PolarRetraction, on the Grassmann manifold M, i.e.,\n\noperatornameretr_p^-1q = q*(p^mathrmHq)^-1 - p\n\nwhere cdot^mathrmH denotes the complex conjugate transposed or Hermitian.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.inverse_retract-Tuple{Grassmann, Any, Any, QRInverseRetraction}","page":"Grassmann","title":"ManifoldsBase.inverse_retract","text":"inverse_retract(M, p, q, ::QRInverseRetraction)\n\nCompute the inverse retraction for the QRRetraction, on the Grassmann manifold M, i.e.,\n\noperatornameretr_p^-1q = q(p^mathrmHq)^-1 - p\n\nwhere cdot^mathrmH denotes the complex conjugate transposed or Hermitian.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.project-Tuple{Grassmann, Any}","page":"Grassmann","title":"ManifoldsBase.project","text":"project(M::Grassmann, p)\n\nProject p from the embedding onto the Grassmann M, i.e. compute q as the polar decomposition of p such that q^mathrmHq is the identity, where cdot^mathrmH denotes the Hermitian, i.e. complex conjugate transposed.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.project-Tuple{Grassmann, Vararg{Any}}","page":"Grassmann","title":"ManifoldsBase.project","text":"project(M::Grassmann, p, X)\n\nProject the n-by-k X onto the tangent space of p on the Grassmann M, which is computed by\n\noperatornameproj_p(X) = X - pp^mathrmHX\n\nwhere cdot^mathrmH denotes the complex conjugate transposed or Hermitian.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.representation_size-Union{Tuple{Grassmann{n, k}}, Tuple{k}, Tuple{n}} where {n, k}","page":"Grassmann","title":"ManifoldsBase.representation_size","text":"representation_size(M::Grassmann{n,k})\n\nReturn the represenation size or matrix dimension of a point on the Grassmann M, i.e. (nk) for both the real-valued and the complex value case.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.retract-Tuple{Grassmann, Any, Any, PolarRetraction}","page":"Grassmann","title":"ManifoldsBase.retract","text":"retract(M::Grassmann, p, X, ::PolarRetraction)\n\nCompute the SVD-based retraction PolarRetraction on the Grassmann M. With USV = p + X the retraction reads\n\noperatornameretr_p X = UV^mathrmH\n\nwhere cdot^mathrmH denotes the complex conjugate transposed or Hermitian.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.retract-Tuple{Grassmann, Any, Any, QRRetraction}","page":"Grassmann","title":"ManifoldsBase.retract","text":"retract(M::Grassmann, p, X, ::QRRetraction )\n\nCompute the QR-based retraction QRRetraction on the Grassmann M. With QR = p + X the retraction reads\n\noperatornameretr_p X = QD\n\nwhere D is a m n matrix with\n\nD = operatornamediagleft( operatornamesgnleft(R_ii+frac12right)_i=1^n right)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.riemann_tensor-Union{Tuple{k}, Tuple{n}, Tuple{Grassmann{n, k, ℝ}, Vararg{Any, 4}}} where {n, k}","page":"Grassmann","title":"ManifoldsBase.riemann_tensor","text":"riemann_tensor(::Grassmann{n,k,ℝ}, p, X, Y, Z) where {n,k}\n\nCompute the value of Riemann tensor on the real Grassmann manifold. The formula reads [Ren11] R(XY)Z = (XY^mathrmT - YX^mathrmT)Z + Z(Y^mathrmTX - X^mathrmTY).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.vector_transport_to-Tuple{Grassmann, Any, Any, Any, ProjectionTransport}","page":"Grassmann","title":"ManifoldsBase.vector_transport_to","text":"vector_transport_to(M::Grassmann,p,X,q,::ProjectionTransport)\n\ncompute the projection based transport on the Grassmann M by interpreting X from the tangent space at p as a point in the embedding and projecting it onto the tangent space at q.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.zero_vector-Tuple{Grassmann, Vararg{Any}}","page":"Grassmann","title":"ManifoldsBase.zero_vector","text":"zero_vector(M::Grassmann, p)\n\nReturn the zero tangent vector from the tangent space at p on the Grassmann M, which is given by a zero matrix the same size as p.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#The-Grassmannian-represented-as-projectors","page":"Grassmann","title":"The Grassmannian represented as projectors","text":"","category":"section"},{"location":"manifolds/grassmann.html","page":"Grassmann","title":"Grassmann","text":"Modules = [Manifolds]\nPages = [\"manifolds/GrassmannProjector.jl\"]\nOrder = [:type,:function]","category":"page"},{"location":"manifolds/grassmann.html#Manifolds.ProjectorPoint","page":"Grassmann","title":"Manifolds.ProjectorPoint","text":"ProjectorPoint <: AbstractManifoldPoint\n\nA type to represent points on a manifold Grassmann that are orthogonal projectors, i.e. a matrix p mathbb F^nn projecting onto a k-dimensional subspace.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/grassmann.html#Manifolds.ProjectorTVector","page":"Grassmann","title":"Manifolds.ProjectorTVector","text":"ProjectorTVector <: TVector\n\nA type to represent tangent vectors to points on a Grassmann manifold that are orthogonal projectors.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/grassmann.html#Base.exp-Tuple{Grassmann, ProjectorPoint, ProjectorTVector}","page":"Grassmann","title":"Base.exp","text":"exp(M::Grassmann, p::ProjectorPoint, X::ProjectorTVector)\n\nCompute the exponential map on the Grassmann as\n\n exp_pX = operatornameExp(Xp)poperatornameExp(-Xp)\n\nwhere operatornameExp denotes the matrix exponential and AB = AB-BA denotes the matrix commutator.\n\nFor details, see Proposition 3.2 in [BZA20].\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#Manifolds.canonical_project!-Union{Tuple{k}, Tuple{n}, Tuple{Grassmann{n, k}, ProjectorPoint, Any}} where {n, k}","page":"Grassmann","title":"Manifolds.canonical_project!","text":"canonical_project!(M::Grassmann{n,k}, q::ProjectorPoint, p)\n\nCompute the canonical projection π(p) from the Stiefel manifold onto the Grassmann manifold when represented as ProjectorPoint, i.e.\n\n π^mathrmSG(p) = pp^mathrmT\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#Manifolds.differential_canonical_project!-Union{Tuple{k}, Tuple{n}, Tuple{Grassmann{n, k}, ProjectorTVector, Any, Any}} where {n, k}","page":"Grassmann","title":"Manifolds.differential_canonical_project!","text":"canonical_project!(M::Grassmann{n,k}, q::ProjectorPoint, p)\n\nCompute the canonical projection π(p) from the Stiefel manifold onto the Grassmann manifold when represented as ProjectorPoint, i.e.\n\n Dπ^mathrmSG(p)X = Xp^mathrmT + pX^mathrmT\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#Manifolds.horizontal_lift-Tuple{Stiefel, Any, ProjectorTVector}","page":"Grassmann","title":"Manifolds.horizontal_lift","text":"horizontal_lift(N::Stiefel{n,k}, q, X::ProjectorTVector)\n\nCompute the horizontal lift of X from the tangent space at p=π(q) on the Grassmann manifold, i.e.\n\nY = Xq T_qmathrmSt(nk)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.check_point-Union{Tuple{𝔽}, Tuple{k}, Tuple{n}, Tuple{Grassmann{n, k, 𝔽}, ProjectorPoint}} where {n, k, 𝔽}","page":"Grassmann","title":"ManifoldsBase.check_point","text":"check_point(::Grassmann{n,k}, p::ProjectorPoint; kwargs...)\n\nCheck whether an orthogonal projector is a point from the Grassmann(n,k) manifold, i.e. the ProjectorPoint p mathbb F^nn, mathbb F mathbb R mathbb C has to fulfill p^mathrmT = p, p^2=p, and `\\operatorname{rank} p = k.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.check_size-Union{Tuple{𝔽}, Tuple{k}, Tuple{n}, Tuple{Grassmann{n, k, 𝔽}, ProjectorPoint}} where {n, k, 𝔽}","page":"Grassmann","title":"ManifoldsBase.check_size","text":"check_size(M::Grassmann{n,k,𝔽}, p::ProjectorPoint; kwargs...) where {n,k}\n\nCheck that the ProjectorPoint is of correct size, i.e. from mathbb F^nn\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.check_vector-Union{Tuple{𝔽}, Tuple{k}, Tuple{n}, Tuple{Grassmann{n, k, 𝔽}, ProjectorPoint, ProjectorTVector}} where {n, k, 𝔽}","page":"Grassmann","title":"ManifoldsBase.check_vector","text":"check_vector(::Grassmann{n,k,𝔽}, p::ProjectorPoint, X::ProjectorTVector; kwargs...) where {n,k,𝔽}\n\nCheck whether the ProjectorTVector X is from the tangent space T_poperatornameGr(nk) at the ProjectorPoint p on the Grassmann manifold operatornameGr(nk). This means that X has to be symmetric and that\n\nXp + pX = X\n\nmust hold, where the kwargs can be used to check both for symmetrix of X` and this equality up to a certain tolerance.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.get_embedding-Union{Tuple{𝔽}, Tuple{k}, Tuple{n}, Tuple{Grassmann{n, k, 𝔽}, ProjectorPoint}} where {n, k, 𝔽}","page":"Grassmann","title":"ManifoldsBase.get_embedding","text":"get_embedding(M::Grassmann{n,k,𝔽}, p::ProjectorPoint) where {n,k,𝔽}\n\nReturn the embedding of the ProjectorPoint representation of the Grassmann manifold, i.e. the Euclidean space mathbb F^nn.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.parallel_transport_direction-Tuple{Grassmann, ProjectorPoint, ProjectorTVector, ProjectorTVector}","page":"Grassmann","title":"ManifoldsBase.parallel_transport_direction","text":"parallel_transport_direction(\n M::Grassmann,\n p::ProjectorPoint,\n X::ProjectorTVector,\n d::ProjectorTVector\n)\n\nCompute the parallel transport of X from the tangent space at p into direction d, i.e. to q=exp_pd. The formula is given in Proposition 3.5 of [BZA20] as\n\nmathcalP_q p(X) = operatornameExp(dp)XoperatornameExp(-dp)\n\nwhere operatornameExp denotes the matrix exponential and AB = AB-BA denotes the matrix commutator.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#ManifoldsBase.representation_size-Union{Tuple{k}, Tuple{n}, Tuple{Grassmann{n, k}, ProjectorPoint}} where {n, k}","page":"Grassmann","title":"ManifoldsBase.representation_size","text":"representation_size(M::Grassmann{n,k}, p::ProjectorPoint)\n\nReturn the represenation size or matrix dimension of a point on the Grassmann M when using ProjectorPoints, i.e. (nn).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/grassmann.html#Literature","page":"Grassmann","title":"Literature","text":"","category":"section"},{"location":"manifolds/grassmann.html","page":"Grassmann","title":"Grassmann","text":"
    [BZA20]
    \n
    \n
    T. Bendokat, R. Zimmermann and P.-A. Absil. A Grassmann Manifold Handbook: Basic Geometry and Computational Aspects, arXiv Preprint (2020), arXiv:2011.13699.
    \n
    [Chi03]
    \n
    \n
    Y. Chikuse. Statistics on Special Manifolds. Springer New York (2003).
    \n
    [Ngu23]
    \n
    \n
    D. Nguyen. Operator-Valued Formulas for Riemannian Gradient and Hessian and Families of Tractable Metrics in Riemannian Optimization. Journal of Optimization Theory and Applications 198, 135–164 (2023), arXiv:2009.10159.
    \n
    [Ren11]
    \n
    \n
    Q. Rentmeesters. A gradient method for geodesic data fitting on some symmetric Riemannian manifolds. In: IEEE Conference on Decision and Control and European Control Conference, 7141–7146 (2011).
    \n
    \n
    ","category":"page"},{"location":"misc/references.html#Literature","page":"References","title":"Literature","text":"","category":"section"},{"location":"misc/references.html","page":"References","title":"References","text":"We are slowly moving to using DocumenterCitations.jl. The goal is to have all references used / mentioned in the documentation of Manifolds.jl also listed here. If you notice a reference still defined in a footnote, please change it into a BibTeX reference and open a PR","category":"page"},{"location":"misc/references.html","page":"References","title":"References","text":"Usually you will find a small reference section at the end of every documentation page that contains references for just that page.","category":"page"},{"location":"misc/references.html","page":"References","title":"References","text":"
    [AMT13]
    \n
    \n\n
    [AMS08]
    \n
    \n
    P.-A. Absil, R. Mahony and R. Sepulchre. Optimization Algorithms on Matrix Manifolds. Princeton University Press (2008), available online at [press.princeton.edu/chapters/absil/](http://press.princeton.edu/chapters/absil/).
    \n
    [ATV13]
    \n
    \n
    B. Afsari, R. Tron and R. Vidal. On the Convergence of Gradient Descent for Finding the Riemannian Center of Mass. SIAM Journal on Control and Optimization 51, 2230–2260 (2013), arXiv:1201.0925.
    \n
    [AR13]
    \n
    \n
    D. Andrica and R.-A. Rohan. Computing the Rodrigues coefficients of the exponential map of the Lie groups of matrices. Balkan Journal of Geometry and Its Applications 18, 1–10 (2013).
    \n
    [ALRV14]
    \n
    \n
    E. Andruchow, G. Larotonda, L. Recht and A. Varela. The left invariant metric in the general linear group. Journal of Geometry and Physics 86, 241–257 (2014), arXiv:1109.0520.
    \n
    [ABBR23]
    \n
    \n
    S. D. Axen, M. Baran, R. Bergmann and K. Rzecki. Manifolds.jl: An Extensible Julia Framework for Data Analysis on Manifolds. AMS Transactions on Mathematical Software (2023), arXiv:2021.08777, accepted for publication.
    \n
    [AJLS17]
    \n
    \n
    N. Ay, J. Jost, H. V. Lê and L. Schwachhöfer. Information Geometry. Springer Cham (2017).
    \n
    [Bac14]
    \n
    \n
    M. Bačák. Computing medians and means in Hadamard spaces. SIAM Journal on Optimization 24, 1542–1566 (2014), arXiv:1210.2145, arXiv: [1210.2145](https://arxiv.org/abs/1210.2145).
    \n
    [BZ21]
    \n
    \n
    T. Bendokat and R. Zimmermann. The real symplectic Stiefel and Grassmann manifolds: metrics, geodesics and applications, arXiv Preprint, 2108.12447 (2021).
    \n
    [BZA20]
    \n
    \n
    T. Bendokat, R. Zimmermann and P.-A. Absil. A Grassmann Manifold Handbook: Basic Geometry and Computational Aspects, arXiv Preprint (2020), arXiv:2011.13699.
    \n
    [BG18]
    \n
    \n
    R. Bergmann and P.-Y. Gousenbourger. A variational model for data fitting on manifolds by minimizing the acceleration of a Bézier curve. Frontiers in Applied Mathematics and Statistics 4 (2018), arXiv:1807.10090.
    \n
    [BP08]
    \n
    \n
    E. Biny and S. Pods. The Geometry of Heisenberg Groups: With Applications in Signal Theory, Optics, Quantization, and Field Quantization. American Mathematical Socienty (2008).
    \n
    [BCC20]
    \n
    \n
    P. Birtea, I. Caçu and D. Comănescu. Optimization on the real symplectic group. Monatshefte für Mathematik 191, 465–485 (2020).
    \n
    [BST03]
    \n
    \n
    L. J. Boya, E. Sudarshan and T. Tilma. Volumes of compact manifolds. Reports on Mathematical Physics 52, 401–422 (2003).
    \n
    [BP19]
    \n
    \n
    A. L. Brigant and S. Puechmorel. Approximation of Densities on Riemannian Manifolds. Entropy 21, 43 (2019).
    \n
    [CV15]
    \n
    \n
    R. Chakraborty and B. C. Vemuri. Recursive Fréchet Mean Computation on the Grassmannian and Its Applications to Computer Vision. In: 2015 IEEE International Conference on Computer Vision (ICCV) (2015).
    \n
    [CV19]
    \n
    \n
    R. Chakraborty and B. C. Vemuri. Statistics on the Stiefel manifold: Theory and applications. The Annals of Statistics 47 (2019), arXiv:1708.00045.
    \n
    [CHSV16]
    \n
    \n
    G. Cheng, J. Ho, H. Salehian and B. C. Vemuri. Recursive Computation of the Fréchet Mean on Non-positively Curved Riemannian Manifolds with Applications. In: Riemannian Computing in Computer Vision, editors, 21–43. Springer, Cham (2016).
    \n
    [CLLD22]
    \n
    \n
    E. Chevallier, D. Li, Y. Lu and D. B. Dunson. Exponential-wrapped distributions on symmetric spaces. ArXiv Preprint (2022).
    \n
    [CKA17]
    \n
    \n
    E. Chevallier, E. Kalunga and J. Angulo. Kernel Density Estimation on Spaces of Gaussian Distributions and Symmetric Positive Definite Matrices. SIAM Journal on Imaging Sciences 10, 191–215 (2017).
    \n
    [Chi03]
    \n
    \n
    Y. Chikuse. Statistics on Special Manifolds. Springer New York (2003).
    \n
    [Dev86]
    \n
    \n
    L. Devroye. Non-Uniform Random Variate Generation. Springer New York, NY (1986).
    \n
    [DBV21]
    \n
    \n
    N. Dewaele, P. Breiding and N. Vannieuwenhoven. The condition number of many tensor decompositions is invariant under Tucker compression, arXiv Preprint (2021), arXiv:2106.13034.
    \n
    [DH19]
    \n
    \n
    A. Douik and B. Hassibi. Manifold Optimization Over the Set of Doubly Stochastic Matrices: A Second-Order Geometry. IEEE Transactions on Signal Processing 67, 5761–5774 (2019), arXiv:1802.02628.
    \n
    [EAS98]
    \n
    \n
    A. Edelman, T. A. Arias and S. T. Smith. The Geometry of Algorithms with Orthogonality Constraints. SIAM Journal on Matrix Analysis and Applications 20, 303–353 (1998), arXiv:806030.
    \n
    [FdHDF19]
    \n
    \n
    L. Falorsi, P. de Haan, T. R. Davidson and P. Forré. Reparameterizing Distributions on Lie Groups, arXiv Preprint (2019).
    \n
    [Fio11]
    \n
    \n
    S. Fiori. Solving Minimal-Distance Problems over the Manifold of Real-Symplectic Matrices. SIAM Journal on Matrix Analysis and Applications 32, 938–968 (2011).
    \n
    [FVJ08]
    \n
    \n
    P. T. Fletcher, S. Venkatasubramanian and S. Joshi. Robust statistics on Riemannian manifolds via the geometric median. In: 2008 IEEE Conference on Computer Vision and Pattern Recognition (2008).
    \n
    [GX02]
    \n
    \n
    J. Gallier and D. Xu. Computing exponentials of skew-symmetric matrices and logarithms of orthogonal matrices. International Journal of Robotics and Automation 17, 1–11 (2002).
    \n
    [GSAS21]
    \n
    \n
    B. Gao, N. T. Son, P.-A. Absil and T. Stykel. Riemannian Optimization on the Symplectic Stiefel Manifold. SIAM Journal on Optimization 31, 1546–1575 (2021).
    \n
    [GMTP21]
    \n
    \n
    N. Guigui, E. Maignant, A. Trouv{é} and X. Pennec. Parallel Transport on Kendall Shape Spaces. In: Geometric Science of Information, editors, 103–110. SPringer Cham (2021).
    \n
    [HMJG21]
    \n
    \n
    A. Han, B. Mushra, P. Jawapanpuria and J. Gao. Learning with symmetric positive definite matrices via generalized Bures-Wasserstein geometry, arXive preprint (2021), arXiv:2110.10464.
    \n
    [HCSV13]
    \n
    \n
    J. Ho, G. Cheng, H. Salehian and B. C. Vemuri. Recursive Karcher expectation estimators and geometric law of large numbers. In: 16th International Conference on Artificial Intelligence and Statistics (2013).
    \n
    [HU17]
    \n
    \n
    S. Hosseini and A. Uschmajew. A Riemannian Gradient Sampling Algorithm for Nonsmooth Optimization on Manifolds. SIAM J. Optim. 27, 173–189 (2017).
    \n
    [HGA15]
    \n
    \n
    W. Huang, K. A. Gallivan and P.-A. Absil. A Broyden Class of Quasi-Newton Methods for Riemannian Optimization. SIAM Journal on Optimization 25, 1660–1685 (2015).
    \n
    [HML21]
    \n
    \n
    K. Hüper, I. Markina and F. S. Leite. A Lagrangian approach to extremal curves on Stiefel manifolds. Journal of Geometric Mechanics 13, 55 (2021).
    \n
    [JBAS10]
    \n
    \n
    M. Journée, F. Bach, P.-A. Absil and R. Sepulchre. Low-Rank Optimization on the Cone of Positive Semidefinite Matrices. SIAM Journal on Optimization 20, 2327–2351 (2010), arXiv:0807.4423.
    \n
    [KFT13]
    \n
    \n
    T. Kaneko, S. Fiori and T. Tanaka. Empirical Arithmetic Averaging Over the Compact Stiefel Manifold. IEEE Transactions on Signal Processing 61, 883–894 (2013).
    \n
    [Kar77]
    \n
    \n
    H. Karcher. Riemannian center of mass and mollifier smoothing. Communications on Pure and Applied Mathematics 30, 509–541 (1977).
    \n
    [Ken84]
    \n
    \n
    D. G. Kendall. Shape Manifolds, Procrustean Metrics, and Complex Projective Spaces. Bulletin of the London Mathematical Society 16, 81–121 (1984).
    \n
    [Ken89]
    \n
    \n
    D. G. Kendall. A Survey of the Statistical Theory of Shape. Statistical Sciences 4, 87–99 (1989).
    \n
    [KL10]
    \n
    \n
    O. Koch and C. Lubich. Dynamical Tensor Approximation. SIAM Journal on Matrix Analysis and Applications 31, 2360–2375 (2010).
    \n
    [KSV13]
    \n
    \n
    D. Kressner, M. Steinlechner and B. Vandereycken. Low-rank tensor completion by Riemannian optimization. BIT Numerical Mathematics 54, 447–468 (2013).
    \n
    [LW19]
    \n
    \n
    N. Langren{é} and X. Warin. Fast and Stable Multivariate Kernel Density Estimation by Fast Sum Updating. Journal of Computational and Graphical Statistics 28, 596–608 (2019).
    \n
    [LMV00]
    \n
    \n
    L. D. Lathauwer, B. D. Moor and J. Vandewalle. A Multilinear Singular Value Decomposition. SIAM Journal on Matrix Analysis and Applications 21, 1253–1278 (2000).
    \n
    [Lee19]
    \n
    \n
    J. M. Lee. Introduction to Riemannian Manifolds. Springer Cham (2019).
    \n
    [Lin19]
    \n
    \n
    Z. Lin. Riemannian Geometry of Symmetric Positive Definite Matrices via Cholesky Decomposition. SIAM Journal on Matrix Analysis and Applications 40, 1353-1370 (2019), arXiv:1908.09326.
    \n
    [MMP18]
    \n
    \n
    L. Malagó, L. Montrucchio and G. Pistone. Wasserstein Riemannian geometry of Gaussian densities. Information Geometry 1, 137–179 (2018).
    \n
    [Mar72]
    \n
    \n
    G. Marsaglia. Choosing a Point from the Surface of a Sphere. Annals of Mathematical Statistics 43, 645–646 (1972).
    \n
    [MA20]
    \n
    \n
    E. Massart and P.-A. Absil. Quotient Geometry with Simple Geodesics for the Manifold of Fixed-Rank Positive-Semidefinite Matrices. SIAM Journal on Matrix Analysis and Applications 41, 171–198 (2020). Preprint: [sites.uclouvain.be/absil/2018.06](https://sites.uclouvain.be/absil/2018.06).
    \n
    [MF12]
    \n
    \n
    P. Muralidharan and P. T. Fletcher. Sasaki metrics for analysis of longitudinal data on manifolds. In: 2012 IEEE Conference on Computer Vision and Pattern Recognition (2012).
    \n
    [NM16]
    \n
    \n
    P. Neff and R. J. Martin. Minimal geodesics on GL(n) for left-invariant, right-O(n)-invariant Riemannian metrics. J. Geom. Mech. 8, 323–357 (2016), arXiv:1409.7849.
    \n
    [Ngu23]
    \n
    \n
    D. Nguyen. Operator-Valued Formulas for Riemannian Gradient and Hessian and Families of Tractable Metrics in Riemannian Optimization. Journal of Optimization Theory and Applications 198, 135–164 (2023), arXiv:2009.10159.
    \n
    [Pen06]
    \n
    \n
    X. Pennec. Intrinsic Statistics on Riemannian Manifolds: Basic Tools for Geometric Measurements. Journal of Mathematical Imaging and Vision 25, 127–154 (2006).
    \n
    [PA12]
    \n
    \n
    X. Pennec and V. Arsigny. Exponential Barycenters of the Canonical Cartan Connection and Invariant Means on Lie Groups. In: Matrix Information Geometry, editors, 123–166. Springer, Berlin, Heidelberg (2012), arXiv:00699361.
    \n
    [PL20]
    \n
    \n
    X. Pennec and M. Lorenzi. Beyond Riemannian geometry: The affine connection setting for transformation groups. In: Riemannian Geometric Statistics in Medical Image Analysis, editors, 169–229. Elsevier (2020).
    \n
    [Ren11]
    \n
    \n
    Q. Rentmeesters. A gradient method for geodesic data fitting on some symmetric Riemannian manifolds. In: IEEE Conference on Decision and Control and European Control Conference, 7141–7146 (2011).
    \n
    [Ric88]
    \n
    \n
    J. M. Rico Martinez. Representations of the Euclidean group and its applications to the kinematics of spatial chains. Phd thesis, University of FLorida (1988).
    \n
    [SCaO+15]
    \n
    \n
    H. Salehian, R. Chakraborty, E. and Ofori, D. Vaillancourt and B. C. Vemuri. An efficient recursive estimator of the Fréchet mean on hypersphere with applications to Medical Image Analysis. In: 5th MICCAI workshop on Mathematical Foundations of Computational Anatomy (2015).
    \n
    [Sas58]
    \n
    \n
    S. Sasaki. On the differential geometry of tangent bundles of Riemannian manifolds. Tohoku Math. J. 10 (1958).
    \n
    [SK16]
    \n
    \n
    A. Srivastava and E. P. Klassen. Functional and Shape Data Analysis. Springer New York (2016).
    \n
    [Suh13]
    \n
    \n
    E. Suhubi. Exterior Analysis: Using Applications of Differential Forms. Academic Press (2013).
    \n
    [Tor20]
    \n
    \n
    S. Tornier. Haar Measures (2020).
    \n
    [TD17]
    \n
    \n
    R. Tron and K. Daniilidis. The Space of Essential Matrices as a Riemannian Quotient Manifold. SIAM J. Imaging Sci. 10, 1416–1445 (2017).
    \n
    [Van13]
    \n
    \n
    B. Vandereycken. Low-rank matrix completion by Riemannian optimization. SIAM Journal on Optimization 23, 1214–1236 (2013).
    \n
    [VVM12]
    \n
    \n
    N. Vannieuwenhoven, R. Vandebril and K. Meerbergen. A New Truncation Strategy for the Higher-Order Singular Value Decomposition. SIAM Journal on Scientific Computing 34, A1027–A1052 (2012).
    \n
    [WSF18]
    \n
    \n
    J. Wang, H. Sun and S. Fiori. A Riemannian-steepest-descent approach for optimization on the real symplectic group. Mathematical Methods in the Applied Science 41, 4273–4286 (2018).
    \n
    [Wes79]
    \n
    \n
    D. H. West. Updating mean and variance estimates. Communications of the ACM 22, 532–535 (1979).
    \n
    [YWL21]
    \n
    \n
    K. Ye, K. S.-W. Wong and L.-H. Lim. Optimization on flag manifolds. Mathematical Programming 194, 621–660 (2021).
    \n
    [Zhu16]
    \n
    \n
    X. Zhu. A Riemannian conjugate gradient method for optimization on the Stiefel manifold. Computational Optimization and Applications 67, 73–110 (2016).
    \n
    [ZD18]
    \n
    \n
    X. Zhu and C. Duan. On matrix exponentials and their approximations related to optimization on the Stiefel manifold. Optimization Letters 13, 1069–1083 (2018).
    \n
    [Zim17]
    \n
    \n
    R. Zimmermann. A Matrix-Algebraic Algorithm for the Riemannian Logarithm on the Stiefel Manifold under the Canonical Metric. SIAM J. Matrix Anal. Appl. 38, 322–342 (2017), arXiv:1604.05054.
    \n
    [ZH22]
    \n
    \n
    R. Zimmermann and K. Hüper. Computing the Riemannian Logarithm on the Stiefel Manifold: Metrics, Methods, and Performance. SIAM Journal on Matrix Analysis and Applications 43, 953-980 (2022), arXiv:2103.12046.
    \n
    [APSS17]
    \n
    \n
    F. Åström, S. Petra, B. Schmitzer and C. Schnörr. Image Labeling by Assignment. Journal of Mathematical Imaging and Vision 58, 211–238 (2017), arXiv:1603.05285.
    \n
    \n
    ","category":"page"},{"location":"manifolds/essentialmanifold.html#Essential-Manifold","page":"Essential manifold","title":"Essential Manifold","text":"","category":"section"},{"location":"manifolds/essentialmanifold.html","page":"Essential manifold","title":"Essential manifold","text":"The essential manifold is modeled as an AbstractPowerManifold of the 3times3 Rotations and uses NestedPowerRepresentation.","category":"page"},{"location":"manifolds/essentialmanifold.html","page":"Essential manifold","title":"Essential manifold","text":"Modules = [Manifolds]\nPages = [\"manifolds/EssentialManifold.jl\"]\nOrder = [:type]","category":"page"},{"location":"manifolds/essentialmanifold.html#Manifolds.EssentialManifold","page":"Essential manifold","title":"Manifolds.EssentialManifold","text":"EssentialManifold <: AbstractPowerManifold{ℝ}\n\nThe essential manifold is the space of the essential matrices which is represented as a quotient space of the Rotations manifold product mathrmSO(3)^2.\n\nLet R_x(θ) R_y(θ) R_x(θ) in ℝ^xtimes 3 denote the rotation around the z, y, and x axis in ℝ^3, respectively, and further the groups\n\nH_z = bigl(R_z(θ)R_z(θ)) big θ -ππ) bigr\n\nand\n\nH_π = bigl (II) (R_x(π) R_x(π)) (IR_z(π)) (R_x(π) R_y(π)) bigr\n\nacting elementwise on the left from mathrmSO(3)^2 (component wise).\n\nThen the unsigned Essential manifold mathcalM_textE can be identified with the quotient space\n\nmathcalM_textE = (textSO(3)textSO(3))(H_z H_π)\n\nand for the signed Essential manifold mathcalM_textƎ, the quotient reads\n\nmathcalM_textƎ = (textSO(3)textSO(3))(H_z)\n\nAn essential matrix is defined as\n\nE = (R_1)^T T_2 - T_1_ R_2\n\nwhere the poses of two cameras (R_i T_i) i=12, are contained in the space of rigid body transformations SE(3) and the operator _colon ℝ^3 to operatornameSkewSym(3) denotes the matrix representation of the cross product operator. For more details see [TD17].\n\nConstructor\n\nEssentialManifold(is_signed=true)\n\nGenerate the manifold of essential matrices, either the signed (is_signed=true) or unsigned (is_signed=false) variant.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/essentialmanifold.html#Functions","page":"Essential manifold","title":"Functions","text":"","category":"section"},{"location":"manifolds/essentialmanifold.html","page":"Essential manifold","title":"Essential manifold","text":"Modules = [Manifolds]\nPrivate = false\nPages = [\"manifolds/EssentialManifold.jl\"]\nOrder = [:function]","category":"page"},{"location":"manifolds/essentialmanifold.html#Base.exp-Tuple{EssentialManifold, Vararg{Any}}","page":"Essential manifold","title":"Base.exp","text":"exp(M::EssentialManifold, p, X)\n\nCompute the exponential map on the EssentialManifold from p into direction X, i.e.\n\ntextexp_p(X) =textexp_g( tilde X) quad g in text(SO)(3)^2\n\nwhere tilde X is the horizontal lift of X[TD17].\n\n\n\n\n\n","category":"method"},{"location":"manifolds/essentialmanifold.html#Base.log-Tuple{EssentialManifold, Any, Any}","page":"Essential manifold","title":"Base.log","text":"log(M::EssentialManifold, p, q)\n\nCompute the logarithmic map on the EssentialManifold M, i.e. the tangent vector, whose geodesic starting from p reaches q after time 1. Here, p=(R_p_1R_p_2) and q=(R_q_1R_q_2) are elements of SO(3)^2. We use that any essential matrix can, up to scale, be decomposed to\n\nE = R_1^T e_z_R_2\n\nwhere (R_1R_2)SO(3)^2. Two points in SO(3)^2 are equivalent iff their corresponding essential matrices are equal (up to a sign flip). To compute the logarithm, we first move q to another representative of its equivalence class. For this, we find t= t_textopt for which the function\n\nf(t) = f_1 + f_2 quad f_i = frac12 θ^2_i(t) quad θ_i(t)=d(R_p_iR_z(t)R_b_i) text for i=12\n\nwhere d() is the distance function in SO(3), is minimized. Further, the group H_z acting on the left on SO(3)^2 is defined as\n\nH_z = (R_z(θ)R_z(θ))colon θ in -ππ) \n\nwhere R_z(θ) is the rotation around the z axis with angle θ. Points in H_z are denoted by S_z. Then, the logarithm is defined as\n\nlog_p (S_z(t_textopt)q) = textLog(R_p_i^T R_z(t_textopt)R_b_i)_i=12\n\nwhere textLog is the logarithm on SO(3). For more details see [TD17].\n\n\n\n\n\n","category":"method"},{"location":"manifolds/essentialmanifold.html#ManifoldsBase.check_point-Tuple{EssentialManifold, Any}","page":"Essential manifold","title":"ManifoldsBase.check_point","text":"check_point(M::EssentialManifold, p; kwargs...)\n\nCheck whether the matrix is a valid point on the EssentialManifold M, i.e. a 2-element array containing SO(3) matrices.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/essentialmanifold.html#ManifoldsBase.check_vector-Tuple{EssentialManifold, Any, Any}","page":"Essential manifold","title":"ManifoldsBase.check_vector","text":"check_vector(M::EssentialManifold, p, X; kwargs... )\n\nCheck whether X is a tangent vector to manifold point p on the EssentialManifold M, i.e. X has to be a 2-element array of 3-by-3 skew-symmetric matrices.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/essentialmanifold.html#ManifoldsBase.distance-Tuple{EssentialManifold, Any, Any}","page":"Essential manifold","title":"ManifoldsBase.distance","text":"distance(M::EssentialManifold, p, q)\n\nCompute the Riemannian distance between the two points p and q on the EssentialManifold. This is done by computing the distance of the equivalence classes p and q of the points p=(R_p_1R_p_2) q=(R_q_1R_q_2) SO(3)^2, respectively. Two points in SO(3)^2 are equivalent iff their corresponding essential matrices, given by\n\nE = R_1^T e_z_R_2\n\nare equal (up to a sign flip). Using the logarithmic map, the distance is given by\n\ntextdist(pq) = textlog_p q = log_p (S_z(t_textopt)q) \n\nwhere S_z H_z = (R_z(θ)R_z(θ))colon θ in -ππ) in which R_z(θ) is the rotation around the z axis with angle θ and t_textopt is the minimizer of the cost function\n\nf(t) = f_1 + f_2 quad f_i = frac12 θ^2_i(t) quad θ_i(t)=d(R_p_iR_z(t)R_b_i) text for i=12\n\nwhere d() is the distance function in SO(3) [TD17].\n\n\n\n\n\n","category":"method"},{"location":"manifolds/essentialmanifold.html#ManifoldsBase.is_flat-Tuple{EssentialManifold}","page":"Essential manifold","title":"ManifoldsBase.is_flat","text":"is_flat(::EssentialManifold)\n\nReturn false. EssentialManifold is not a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/essentialmanifold.html#ManifoldsBase.manifold_dimension-Tuple{EssentialManifold}","page":"Essential manifold","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::EssentialManifold{is_signed, ℝ})\n\nReturn the manifold dimension of the EssentialManifold, which is 5[TD17].\n\n\n\n\n\n","category":"method"},{"location":"manifolds/essentialmanifold.html#ManifoldsBase.parallel_transport_to-Tuple{EssentialManifold, Any, Any, Any}","page":"Essential manifold","title":"ManifoldsBase.parallel_transport_to","text":"parallel_transport_to(M::EssentialManifold, p, X, q)\n\nCompute the vector transport of the tangent vector X at p to q on the EssentialManifold M using left translation of the ambient group.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/essentialmanifold.html#ManifoldsBase.project-Tuple{EssentialManifold, Any, Any}","page":"Essential manifold","title":"ManifoldsBase.project","text":"project(M::EssentialManifold, p, X)\n\nProject the matrix X onto the tangent space\n\nT_p textSO(3)^2 = T_textvptextSO(3)^2 T_texthptextSO(3)^2\n\nby first computing its projection onto the vertical space T_textvptextSO(3)^2 using vert_proj. Then the orthogonal projection of X onto the horizontal space T_texthptextSO(3)^2 is defined as\n\nPi_h(X) = X - fractextvert_proj_p(X)2 beginbmatrix R_1^T e_z R_2^T e_z endbmatrix\n\nwith R_i = R_0 R_i i=12 where R_i is part of the pose of camera i g_i = (R_iT_i) textSE(3) and R_0 textSO(3) such that R_0(T_2-T_1) = e_z.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/essentialmanifold.html#Internal-Functions","page":"Essential manifold","title":"Internal Functions","text":"","category":"section"},{"location":"manifolds/essentialmanifold.html","page":"Essential manifold","title":"Essential manifold","text":"Modules = [Manifolds]\nPublic = false\nPages = [\"manifolds/EssentialManifold.jl\"]\nOrder = [:function]","category":"page"},{"location":"manifolds/essentialmanifold.html#Manifolds.dist_min_angle_pair-Tuple{Any, Any}","page":"Essential manifold","title":"Manifolds.dist_min_angle_pair","text":"dist_min_angle_pair(p, q)\n\nThis function computes the global minimizer of the function\n\nf(t) = f_1 + f_2 quad f_i = frac12 θ^2_i(t) quad θ_i(t)=d(R_p_iR_z(t)R_b_i) text for i=12\n\nfor the given values. This is done by finding the discontinuity points t_d_i i=12 of its derivative and using Newton's method to minimize the function over the intervals t_d_1t_d_2 and t_d_2t_d_1+2π separately. Then, the minimizer for which f is minimal is chosen and given back together with the minimal value. For more details see Algorithm 1 in [TD17].\n\n\n\n\n\n","category":"method"},{"location":"manifolds/essentialmanifold.html#Manifolds.dist_min_angle_pair_compute_df_break-Tuple{Any, Any}","page":"Essential manifold","title":"Manifolds.dist_min_angle_pair_compute_df_break","text":"dist_min_angle_pair_compute_df_break(t_break, q)\n\nThis function computes the derivatives of each term f_i i=12 at discontinuity point t_break. For more details see [TD17].\n\n\n\n\n\n","category":"method"},{"location":"manifolds/essentialmanifold.html#Manifolds.dist_min_angle_pair_df_newton-NTuple{9, Any}","page":"Essential manifold","title":"Manifolds.dist_min_angle_pair_df_newton","text":"dist_min_angle_pair_df_newton(m1, Φ1, c1, m2, Φ2, c2, t_min, t_low, t_high)\n\nThis function computes the minimizer of the function\n\nf(t) = f_1 + f_2 quad f_i = frac12 θ^2_i(t) quad θ_i(t)=d(R_p_iR_z(t)R_b_i) text for i=12\n\nin the interval t_low, t_high using Newton's method. For more details see [TD17].\n\n\n\n\n\n","category":"method"},{"location":"manifolds/essentialmanifold.html#Manifolds.dist_min_angle_pair_discontinuity_distance-Tuple{Any}","page":"Essential manifold","title":"Manifolds.dist_min_angle_pair_discontinuity_distance","text":"dist_min_angle_pair_discontinuity_distance(q)\n\nThis function computes the point t_textdi for which the first derivative of\n\nf(t) = f_1 + f_2 quad f_i = frac12 θ^2_i(t) quad θ_i(t)=d(R_p_iR_z(t)R_b_i) text for i=12\n\ndoes not exist. This is the case for sin(θ_i(t_textdi)) = 0. For more details see Proposition 9 and its proof, as well as Lemma 1 in [TD17].\n\n\n\n\n\n","category":"method"},{"location":"manifolds/essentialmanifold.html#Manifolds.vert_proj-Tuple{EssentialManifold, Any, Any}","page":"Essential manifold","title":"Manifolds.vert_proj","text":"vert_proj(M::EssentialManifold, p, X)\n\nProject X onto the vertical space T_textvptextSO(3)^2 with\n\ntextvert_proj_p(X) = e_z^T(R_1 X_1 + R_2 X_2)\n\nwhere e_z is the third unit vector, X_i T_ptextSO(3) for i=12 and it holds R_i = R_0 R_i i=12 where R_i is part of the pose of camera i g_i = (R_iT_i) textSE(3) and R_0 textSO(3) such that R_0(T_2-T_1) = e_z [TD17].\n\n\n\n\n\n","category":"method"},{"location":"manifolds/essentialmanifold.html#Literature","page":"Essential manifold","title":"Literature","text":"","category":"section"},{"location":"manifolds/power.html#PowerManifoldSection","page":"Power manifold","title":"Power manifold","text":"","category":"section"},{"location":"manifolds/power.html","page":"Power manifold","title":"Power manifold","text":"A power manifold is based on a AbstractManifold mathcal M to build a mathcal M^n_1 times n_2 times cdots times n_m. In the case where m=1 we can represent a manifold-valued vector of data of length n_1, for example a time series. The case where m=2 is useful for representing manifold-valued matrices of data of size n_1 times n_2, for example certain types of images.","category":"page"},{"location":"manifolds/power.html","page":"Power manifold","title":"Power manifold","text":"There are three available representations for points and vectors on a power manifold:","category":"page"},{"location":"manifolds/power.html","page":"Power manifold","title":"Power manifold","text":"ArrayPowerRepresentation (the default one), very efficient but only applicable when points on the underlying manifold are represented using plain AbstractArrays.\nNestedPowerRepresentation, applicable to any manifold. It assumes that points on the underlying manifold are represented using mutable data types.\nNestedReplacingPowerRepresentation, applicable to any manifold. It does not mutate points on the underlying manifold, replacing them instead when appropriate.","category":"page"},{"location":"manifolds/power.html","page":"Power manifold","title":"Power manifold","text":"Below are some examples of usage of these representations.","category":"page"},{"location":"manifolds/power.html#Example","page":"Power manifold","title":"Example","text":"","category":"section"},{"location":"manifolds/power.html","page":"Power manifold","title":"Power manifold","text":"There are two ways to store the data: in a multidimensional array or in a nested array.","category":"page"},{"location":"manifolds/power.html","page":"Power manifold","title":"Power manifold","text":"Let's look at an example for both. Let mathcal M be Sphere(2) the 2-sphere and we want to look at vectors of length 4.","category":"page"},{"location":"manifolds/power.html#ArrayPowerRepresentation","page":"Power manifold","title":"ArrayPowerRepresentation","text":"","category":"section"},{"location":"manifolds/power.html","page":"Power manifold","title":"Power manifold","text":"For the default, the ArrayPowerRepresentation, we store the data in a multidimensional array,","category":"page"},{"location":"manifolds/power.html","page":"Power manifold","title":"Power manifold","text":"using Manifolds\nM = PowerManifold(Sphere(2), 4)\np = cat([1.0, 0.0, 0.0],\n [1/sqrt(2.0), 1/sqrt(2.0), 0.0],\n [1/sqrt(2.0), 0.0, 1/sqrt(2.0)],\n [0.0, 1.0, 0.0]\n ,dims=2)","category":"page"},{"location":"manifolds/power.html","page":"Power manifold","title":"Power manifold","text":"which is a valid point i.e.","category":"page"},{"location":"manifolds/power.html","page":"Power manifold","title":"Power manifold","text":"is_point(M, p)","category":"page"},{"location":"manifolds/power.html","page":"Power manifold","title":"Power manifold","text":"This can also be used in combination with HybridArrays.jl and StaticArrays.jl, by setting","category":"page"},{"location":"manifolds/power.html","page":"Power manifold","title":"Power manifold","text":"using HybridArrays, StaticArrays\nq = HybridArray{Tuple{3,StaticArrays.Dynamic()},Float64,2}(p)","category":"page"},{"location":"manifolds/power.html","page":"Power manifold","title":"Power manifold","text":"which is still a valid point on M and PowerManifold works with these, too.","category":"page"},{"location":"manifolds/power.html","page":"Power manifold","title":"Power manifold","text":"An advantage of this representation is that it is quite efficient, especially when a HybridArray (from the HybridArrays.jl package) is used to represent a point on the power manifold. A disadvantage is not being able to easily identify parts of the multidimensional array that correspond to a single point on the base manifold. Another problem is, that accessing a single point is p[:, 1] which might be unintuitive.","category":"page"},{"location":"manifolds/power.html#NestedPowerRepresentation","page":"Power manifold","title":"NestedPowerRepresentation","text":"","category":"section"},{"location":"manifolds/power.html","page":"Power manifold","title":"Power manifold","text":"For the NestedPowerRepresentation we can now do","category":"page"},{"location":"manifolds/power.html","page":"Power manifold","title":"Power manifold","text":"using Manifolds\nM = PowerManifold(Sphere(2), NestedPowerRepresentation(), 4)\np = [ [1.0, 0.0, 0.0],\n [1/sqrt(2.0), 1/sqrt(2.0), 0.0],\n [1/sqrt(2.0), 0.0, 1/sqrt(2.0)],\n [0.0, 1.0, 0.0],\n ]","category":"page"},{"location":"manifolds/power.html","page":"Power manifold","title":"Power manifold","text":"which is again a valid point so is_point(M, p) here also yields true. A disadvantage might be that with nested arrays one loses a little bit of performance. The data however is nicely encapsulated. Accessing the first data item is just p[1].","category":"page"},{"location":"manifolds/power.html","page":"Power manifold","title":"Power manifold","text":"For accessing points on power manifolds in both representations you can use get_component and set_component! functions. They work work both point representations.","category":"page"},{"location":"manifolds/power.html","page":"Power manifold","title":"Power manifold","text":"using Manifolds\nM = PowerManifold(Sphere(2), NestedPowerRepresentation(), 4)\np = [ [1.0, 0.0, 0.0],\n [1/sqrt(2.0), 1/sqrt(2.0), 0.0],\n [1/sqrt(2.0), 0.0, 1/sqrt(2.0)],\n [0.0, 1.0, 0.0],\n ]\nset_component!(M, p, [0.0, 0.0, 1.0], 4)\nget_component(M, p, 4)","category":"page"},{"location":"manifolds/power.html#NestedReplacingPowerRepresentation","page":"Power manifold","title":"NestedReplacingPowerRepresentation","text":"","category":"section"},{"location":"manifolds/power.html","page":"Power manifold","title":"Power manifold","text":"The final representation is the NestedReplacingPowerRepresentation. It is similar to the NestedPowerRepresentation but it does not perform in-place operations on the points on the underlying manifold. The example below uses this representation to store points on a power manifold of the SpecialEuclidean group in-line in an Vector for improved efficiency. When having a mixture of both, i.e. an array structure that is nested (like ´NestedPowerRepresentation) in the sense that the elements of the main vector are immutable, then changing the elements can not be done in an in-place way and hence NestedReplacingPowerRepresentation has to be used.","category":"page"},{"location":"manifolds/power.html","page":"Power manifold","title":"Power manifold","text":"using Manifolds, StaticArrays\nR2 = Rotations(2)\n\nG = SpecialEuclidean(2)\nN = 5\nGN = PowerManifold(G, NestedReplacingPowerRepresentation(), N)\n\nq = [1.0 0.0; 0.0 1.0]\np1 = [ProductRepr(SVector{2,Float64}([i - 0.1, -i]), SMatrix{2,2,Float64}(exp(R2, q, hat(R2, q, i)))) for i in 1:N]\np2 = [ProductRepr(SVector{2,Float64}([i - 0.1, -i]), SMatrix{2,2,Float64}(exp(R2, q, hat(R2, q, -i)))) for i in 1:N]\n\nX = similar(p1);\n\nlog!(GN, X, p1, p2)","category":"page"},{"location":"manifolds/power.html#Types-and-Functions","page":"Power manifold","title":"Types and Functions","text":"","category":"section"},{"location":"manifolds/power.html","page":"Power manifold","title":"Power manifold","text":"Modules = [Manifolds]\nPages = [\"manifolds/PowerManifold.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/power.html#Manifolds.ArrayPowerRepresentation","page":"Power manifold","title":"Manifolds.ArrayPowerRepresentation","text":"ArrayPowerRepresentation\n\nRepresentation of points and tangent vectors on a power manifold using multidimensional arrays where first dimensions are equal to representation_size of the wrapped manifold and the following ones are equal to the number of elements in each direction.\n\nTorus uses this representation.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/power.html#Manifolds.PowerFVectorDistribution","page":"Power manifold","title":"Manifolds.PowerFVectorDistribution","text":"PowerFVectorDistribution([type::VectorBundleFibers], [x], distr)\n\nGenerates a random vector at a point from vector space (a fiber of a tangent bundle) of type type using the power distribution of distr.\n\nVector space type and point can be automatically inferred from distribution distr.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/power.html#Manifolds.PowerMetric","page":"Power manifold","title":"Manifolds.PowerMetric","text":"PowerMetric <: AbstractMetric\n\nRepresent the AbstractMetric on an AbstractPowerManifold, i.e. the inner product on the tangent space is the sum of the inner product of each elements tangent space of the power manifold.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/power.html#Manifolds.PowerPointDistribution","page":"Power manifold","title":"Manifolds.PowerPointDistribution","text":"PowerPointDistribution(M::AbstractPowerManifold, distribution)\n\nPower distribution on manifold M, based on distribution.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/power.html#ManifoldDiff.riemannian_Hessian-Tuple{AbstractPowerManifold, Vararg{Any, 4}}","page":"Power manifold","title":"ManifoldDiff.riemannian_Hessian","text":"Y = riemannian_Hessian(M::AbstractPowerManifold, p, G, H, X)\nriemannian_Hessian!(M::AbstractPowerManifold, Y, p, G, H, X)\n\nCompute the Riemannian Hessian operatornameHess f(p)X given the Euclidean gradient f(tilde p) in G and the Euclidean Hessian ^2 f(tilde p)tilde X in H, where tilde p tilde X are the representations of pX in the embedding,.\n\nOn an abstract power manifold, this decouples and can be computed elementwise.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/power.html#Manifolds.flat-Tuple{AbstractPowerManifold, Vararg{Any}}","page":"Power manifold","title":"Manifolds.flat","text":"flat(M::AbstractPowerManifold, p, X)\n\nuse the musical isomorphism to transform the tangent vector X from the tangent space at p on an AbstractPowerManifold M to a cotangent vector. This can be done elementwise for each entry of X (and p).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/power.html#Manifolds.manifold_volume-Union{Tuple{PowerManifold{𝔽, <:AbstractManifold, TSize}}, Tuple{TSize}, Tuple{𝔽}} where {𝔽, TSize}","page":"Power manifold","title":"Manifolds.manifold_volume","text":"manifold_volume(M::PowerManifold)\n\nReturn the manifold volume of an PowerManifold M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/power.html#Manifolds.sharp-Tuple{AbstractPowerManifold, Vararg{Any}}","page":"Power manifold","title":"Manifolds.sharp","text":"sharp(M::AbstractPowerManifold, p, ξ::RieszRepresenterCotangentVector)\n\nUse the musical isomorphism to transform the cotangent vector ξ from the tangent space at p on an AbstractPowerManifold M to a tangent vector. This can be done elementwise for every entry of ξ (and p).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/power.html#Manifolds.volume_density-Tuple{PowerManifold, Any, Any}","page":"Power manifold","title":"Manifolds.volume_density","text":"volume_density(M::PowerManifold, p, X)\n\nReturn volume density on the PowerManifold M, i.e. product of constituent volume densities.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/power.html#ManifoldsBase.Weingarten-Tuple{AbstractPowerManifold, Any, Any, Any}","page":"Power manifold","title":"ManifoldsBase.Weingarten","text":"Y = Weingarten(M::AbstractPowerManifold, p, X, V)\nWeingarten!(M::AbstractPowerManifold, Y, p, X, V)\n\nSince the metric decouples, also the computation of the Weingarten map mathcal W_p can be computed elementwise on the single elements of the PowerManifold M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/power.html#ManifoldsBase.change_metric-Tuple{AbstractPowerManifold, AbstractMetric, Any, Any}","page":"Power manifold","title":"ManifoldsBase.change_metric","text":"change_metric(M::AbstractPowerManifold, ::AbstractMetric, p, X)\n\nSince the metric on a power manifold decouples, the change of metric can be done elementwise.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/power.html#ManifoldsBase.change_representer-Tuple{AbstractPowerManifold, AbstractMetric, Any, Any}","page":"Power manifold","title":"ManifoldsBase.change_representer","text":"change_representer(M::AbstractPowerManifold, ::AbstractMetric, p, X)\n\nSince the metric on a power manifold decouples, the change of a representer can be done elementwise\n\n\n\n\n\n","category":"method"},{"location":"manifolds/rotations.html#Rotations","page":"Rotations","title":"Rotations","text":"","category":"section"},{"location":"manifolds/rotations.html","page":"Rotations","title":"Rotations","text":"The manifold mathrmSO(n) of orthogonal matrices with determinant +1 in ℝ^n n, i.e.","category":"page"},{"location":"manifolds/rotations.html","page":"Rotations","title":"Rotations","text":"mathrmSO(n) = biglR ℝ^n n big R R^mathrmT =\nR^mathrmTR = I_n det(R) = 1 bigr","category":"page"},{"location":"manifolds/rotations.html","page":"Rotations","title":"Rotations","text":"The Lie group mathrmSO(n) is a subgroup of the orthogonal group mathrmO(n) and also known as the special orthogonal group or the set of rotations group. See also SpecialOrthogonal, which is this manifold equipped with the group operation.","category":"page"},{"location":"manifolds/rotations.html","page":"Rotations","title":"Rotations","text":"The tangent space to a point p mathrmSO(n) is given by","category":"page"},{"location":"manifolds/rotations.html","page":"Rotations","title":"Rotations","text":"T_pmathrmSO(n) = X X=pYqquad Y=-Y^mathrmT","category":"page"},{"location":"manifolds/rotations.html","page":"Rotations","title":"Rotations","text":"i.e. all vectors that are a product of a skew symmetric matrix multiplied with p.","category":"page"},{"location":"manifolds/rotations.html","page":"Rotations","title":"Rotations","text":"Since the orthogonal matrices mathrmSO(n) are a Lie group, tangent vectors can also be represented by elements of the corresponding Lie algebra, which is the tangent space at the identity element. In the notation above, this means we just store the component Y of X.","category":"page"},{"location":"manifolds/rotations.html","page":"Rotations","title":"Rotations","text":"This convention allows for more efficient operations on tangent vectors. Tangent spaces at different points are different vector spaces.","category":"page"},{"location":"manifolds/rotations.html","page":"Rotations","title":"Rotations","text":"Let L_R mathrmSO(n) mathrmSO(n) where R mathrmSO(n) be the left-multiplication by R, that is L_R(S) = RS. The tangent space at rotation R, T_R mathrmSO(n), is related to the tangent space at the identity rotation I_n by the differential of L_R at identity, (mathrmdL_R)_I_n T_I_n mathrmSO(n) T_R mathrmSO(n). To convert the tangent vector representation at the identity rotation X T_I_n mathrmSO(n) (i.e., the default) to the matrix representation of the corresponding tangent vector Y at a rotation R use the embed which implements the following multiplication: Y = RX T_R mathrmSO(n). You can compare the functions log and exp to see how it works in practice.","category":"page"},{"location":"manifolds/rotations.html","page":"Rotations","title":"Rotations","text":"Several common functions are also implemented together with orthogonal and unitary matrices.","category":"page"},{"location":"manifolds/rotations.html","page":"Rotations","title":"Rotations","text":"Modules = [Manifolds]\nPages = [\"manifolds/Rotations.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/rotations.html#Manifolds.NormalRotationDistribution","page":"Rotations","title":"Manifolds.NormalRotationDistribution","text":"NormalRotationDistribution(M::Rotations, d::Distribution, x::TResult)\n\nDistribution that returns a random point on the manifold Rotations M. Random point is generated using base distribution d and the type of the result is adjusted to TResult.\n\nSee normal_rotation_distribution for details.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/rotations.html#Manifolds.Rotations","page":"Rotations","title":"Manifolds.Rotations","text":"Rotations{N} <: AbstractManifold{ℝ}\n\nThe manifold of rotation matrices of sice n n, i.e. real-valued orthogonal matrices with determinant +1.\n\nConstructor\n\nRotations(n)\n\nGenerate the manifold of n n rotation matrices.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/rotations.html#ManifoldDiff.riemannian_Hessian-Tuple{Rotations, Vararg{Any, 4}}","page":"Rotations","title":"ManifoldDiff.riemannian_Hessian","text":"riemannian_Hessian(M::Rotations, p, G, H, X)\n\nThe Riemannian Hessian can be computed by adopting Eq. (5.6) [Ngu23], so very similar to the Stiefel manifold. The only difference is, that here the tangent vectors are stored in the Lie algebra, i.e. the update direction is actually pX instead of just X (in Stiefel). and that means the inverse has to be appliead to the (Euclidean) Hessian to map it into the Lie algebra.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/rotations.html#Manifolds.angles_4d_skew_sym_matrix-Tuple{Any}","page":"Rotations","title":"Manifolds.angles_4d_skew_sym_matrix","text":"angles_4d_skew_sym_matrix(A)\n\nThe Lie algebra of Rotations(4) in ℝ^4 4, 𝔰𝔬(4), consists of 4 4 skew-symmetric matrices. The unique imaginary components of their eigenvalues are the angles of the two plane rotations. This function computes these more efficiently than eigvals.\n\nBy convention, the returned values are sorted in decreasing order (corresponding to the same ordering of angles as cos_angles_4d_rotation_matrix).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/rotations.html#Manifolds.normal_rotation_distribution-Union{Tuple{N}, Tuple{Rotations{N}, Any, Real}} where N","page":"Rotations","title":"Manifolds.normal_rotation_distribution","text":"normal_rotation_distribution(M::Rotations, p, σ::Real)\n\nReturn a random point on the manifold Rotations M by generating a (Gaussian) random orthogonal matrix with determinant +1. Let\n\nQR = A\n\nbe the QR decomposition of a random matrix A, then the formula reads\n\np = QD\n\nwhere D is a diagonal matrix with the signs of the diagonal entries of R, i.e.\n\nD_ij=begincases operatornamesgn(R_ij) textif i=j 0 textotherwise endcases\n\nIt can happen that the matrix gets -1 as a determinant. In this case, the first and second columns are swapped.\n\nThe argument p is used to determine the type of returned points.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/rotations.html#ManifoldsBase.Weingarten-Tuple{Rotations, Any, Any, Any}","page":"Rotations","title":"ManifoldsBase.Weingarten","text":"Weingarten(M::Rotations, p, X, V)\n\nCompute the Weingarten map mathcal W_p at p on the Stiefel M with respect to the tangent vector X in T_pmathcal M and the normal vector V in N_pmathcal M.\n\nThe formula is due to [AMT13] given by\n\nmathcal W_p(XV) = -frac12pbigl(V^mathrmTX - X^mathrmTVbigr)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/rotations.html#ManifoldsBase.injectivity_radius-Tuple{Rotations, PolarRetraction}","page":"Rotations","title":"ManifoldsBase.injectivity_radius","text":"injectivity_radius(M::Rotations, ::PolarRetraction)\n\nReturn the radius of injectivity for the PolarRetraction on the Rotations M which is fracπsqrt2.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/rotations.html#ManifoldsBase.inverse_retract-Tuple{Rotations, Any, Any, PolarInverseRetraction}","page":"Rotations","title":"ManifoldsBase.inverse_retract","text":"inverse_retract(M, p, q, ::PolarInverseRetraction)\n\nCompute a vector from the tangent space T_pmathrmSO(n) of the point p on the Rotations manifold M with which the point q can be reached by the PolarRetraction from the point p after time 1.\n\nThe formula reads\n\noperatornameretr^-1_p(q)\n= -frac12(p^mathrmTqs - (p^mathrmTqs)^mathrmT)\n\nwhere s is the solution to the Sylvester equation\n\np^mathrmTqs + s(p^mathrmTq)^mathrmT + 2I_n = 0\n\n\n\n\n\n","category":"method"},{"location":"manifolds/rotations.html#ManifoldsBase.inverse_retract-Tuple{Rotations, Any, Any, QRInverseRetraction}","page":"Rotations","title":"ManifoldsBase.inverse_retract","text":"inverse_retract(M::Rotations, p, q, ::QRInverseRetraction)\n\nCompute a vector from the tangent space T_pmathrmSO(n) of the point p on the Rotations manifold M with which the point q can be reached by the QRRetraction from the point q after time 1.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/rotations.html#ManifoldsBase.parallel_transport_direction-Tuple{Rotations, Any, Any, Any}","page":"Rotations","title":"ManifoldsBase.parallel_transport_direction","text":"parallel_transport_direction(M::Rotations, p, X, d)\n\nCompute parallel transport of vector X tangent at p on the Rotations manifold in the direction d. The formula, provided in [Ren11], reads:\n\nmathcal P_qgets pX = q^mathrmTp operatornameExp(d2) X operatornameExp(d2)\n\nwhere q=exp_p d.\n\nThe formula simplifies to identity for 2-D rotations.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/rotations.html#ManifoldsBase.project-Tuple{Rotations, Any}","page":"Rotations","title":"ManifoldsBase.project","text":"project(M::Rotations, p; check_det = true)\n\nProject p to the nearest point on manifold M.\n\nGiven the singular value decomposition p = U Σ V^mathrmT, with the singular values sorted in descending order, the projection is\n\noperatornameproj_mathrmSO(n)(p) =\nUoperatornamediagleft11det(U V^mathrmT)right V^mathrmT\n\nThe diagonal matrix ensures that the determinant of the result is +1. If p is expected to be almost special orthogonal, then you may avoid this check with check_det = false.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/rotations.html#ManifoldsBase.zero_vector-Tuple{Rotations, Any}","page":"Rotations","title":"ManifoldsBase.zero_vector","text":"zero_vector(M::Rotations, p)\n\nReturn the zero tangent vector from the tangent space art p on the Rotations as an element of the Lie group, i.e. the zero matrix.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/rotations.html#Literature","page":"Rotations","title":"Literature","text":"","category":"section"},{"location":"manifolds/rotations.html","page":"Rotations","title":"Rotations","text":"
    [AMT13]
    \n
    \n\n
    [Ngu23]
    \n
    \n
    D. Nguyen. Operator-Valued Formulas for Riemannian Gradient and Hessian and Families of Tractable Metrics in Riemannian Optimization. Journal of Optimization Theory and Applications 198, 135–164 (2023), arXiv:2009.10159.
    \n
    [Ren11]
    \n
    \n
    Q. Rentmeesters. A gradient method for geodesic data fitting on some symmetric Riemannian manifolds. In: IEEE Conference on Decision and Control and European Control Conference, 7141–7146 (2011).
    \n
    \n
    ","category":"page"},{"location":"manifolds/generalizedgrassmann.html#Generalized-Grassmann","page":"Generalized Grassmann","title":"Generalized Grassmann","text":"","category":"section"},{"location":"manifolds/generalizedgrassmann.html","page":"Generalized Grassmann","title":"Generalized Grassmann","text":"Modules = [Manifolds]\nPages = [\"manifolds/GeneralizedGrassmann.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/generalizedgrassmann.html#Manifolds.GeneralizedGrassmann","page":"Generalized Grassmann","title":"Manifolds.GeneralizedGrassmann","text":"GeneralizedGrassmann{n,k,𝔽} <: AbstractDecoratorManifold{𝔽}\n\nThe generalized Grassmann manifold operatornameGr(nkB) consists of all subspaces spanned by k linear independent vectors 𝔽^n, where 𝔽 ℝ ℂ is either the real- (or complex-) valued vectors. This yields all k-dimensional subspaces of ℝ^n for the real-valued case and all 2k-dimensional subspaces of ℂ^n for the second.\n\nThe manifold can be represented as\n\noperatornameGr(n k B) = bigl operatornamespan(p) big p 𝔽^n k p^mathrmHBp = I_k\n\nwhere cdot^mathrmH denotes the complex conjugate (or Hermitian) transpose and I_k is the k k identity matrix. This means, that the columns of p form an unitary basis of the subspace with respect to the scaled inner product, that is a point on operatornameGr(nkB), and hence the subspace can actually be represented by a whole equivalence class of representers. For B=I_n this simplifies to the Grassmann manifold.\n\nThe tangent space at a point (subspace) p is given by\n\nT_xmathrmGr(nkB) = bigl\nX 𝔽^n k \nX^mathrmHBp + p^mathrmHBX = 0_k bigr\n\nwhere 0_k denotes the k k zero matrix.\n\nNote that a point p operatornameGr(nkB) might be represented by different matrices (i.e. matrices with B-unitary column vectors that span the same subspace). Different representations of p also lead to different representation matrices for the tangent space T_pmathrmGr(nkB)\n\nThe manifold is named after Hermann G. Graßmann (1809-1877).\n\nConstructor\n\nGeneralizedGrassmann(n, k, B=I_n, field=ℝ)\n\nGenerate the (real-valued) Generalized Grassmann manifold of ntimes k dimensional orthonormal matrices with scalar product B.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/generalizedgrassmann.html#Base.exp-Tuple{GeneralizedGrassmann, Vararg{Any}}","page":"Generalized Grassmann","title":"Base.exp","text":"exp(M::GeneralizedGrassmann, p, X)\n\nCompute the exponential map on the GeneralizedGrassmann M= mathrmGr(nkB) starting in p with tangent vector (direction) X. Let X^mathrmHBX = USV denote the SVD decomposition of X^mathrmHBX. Then the exponential map is written using\n\nexp_p X = p Vcos(S)V^mathrmH + Usin(S)V^mathrmH\n\nwhere cdot^mathrmH denotes the complex conjugate transposed or Hermitian and the cosine and sine are applied element wise to the diagonal entries of S.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedgrassmann.html#Base.log-Tuple{GeneralizedGrassmann, Vararg{Any}}","page":"Generalized Grassmann","title":"Base.log","text":"log(M::GeneralizedGrassmann, p, q)\n\nCompute the logarithmic map on the GeneralizedGrassmann M$ = \\mathcal M=\\mathrm{Gr}(n,k,B)$, i.e. the tangent vector X whose corresponding geodesic starting from p reaches q after time 1 on M. The formula reads\n\nlog_p q = Vcdot operatornameatan(S) cdot U^mathrmH\n\nwhere cdot^mathrmH denotes the complex conjugate transposed or Hermitian. The matrices U and V are the unitary matrices, and S is the diagonal matrix containing the singular values of the SVD-decomposition\n\nUSV = (q^mathrmHBp)^-1 ( q^mathrmH - q^mathrmHBpp^mathrmH)\n\nIn this formula the operatornameatan is meant elementwise.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedgrassmann.html#Base.rand-Tuple{GeneralizedGrassmann}","page":"Generalized Grassmann","title":"Base.rand","text":"rand(::GeneralizedGrassmann; vector_at=nothing, σ::Real=1.0)\n\nWhen vector_at is nothing, return a random (Gaussian) point p on the GeneralizedGrassmann manifold M by generating a (Gaussian) matrix with standard deviation σ and return the (generalized) orthogonalized version, i.e. return the projection onto the manifold of the Q component of the QR decomposition of the random matrix of size nk.\n\nWhen vector_at is not nothing, return a (Gaussian) random vector from the tangent space T_vector_atmathrmSt(nk) with mean zero and standard deviation σ by projecting a random Matrix onto the tangent vector at vector_at.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedgrassmann.html#ManifoldsBase.change_metric-Tuple{GeneralizedGrassmann, EuclideanMetric, Any, Any}","page":"Generalized Grassmann","title":"ManifoldsBase.change_metric","text":"change_metric(M::GeneralizedGrassmann, ::EuclideanMetric, p X)\n\nChange X to the corresponding vector with respect to the metric of the GeneralizedGrassmann M, i.e. let B=LL be the Cholesky decomposition of the matrix M.B, then the corresponding vector is LX.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedgrassmann.html#ManifoldsBase.change_representer-Tuple{GeneralizedGrassmann, EuclideanMetric, Any, Any}","page":"Generalized Grassmann","title":"ManifoldsBase.change_representer","text":"change_representer(M::GeneralizedGrassmann, ::EuclideanMetric, p, X)\n\nChange X to the corresponding representer of a cotangent vector at p with respect to the scaled metric of the GeneralizedGrassmann M, i.e, since\n\ng_p(XY) = operatornametr(Y^mathrmHBZ) = operatornametr(X^mathrmHZ) = XZ\n\nhas to hold for all Z, where the repreenter X is given, the resulting representer with respect to the metric on the GeneralizedGrassmann is given by Y = B^-1X.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedgrassmann.html#ManifoldsBase.check_point-Union{Tuple{𝔽}, Tuple{k}, Tuple{n}, Tuple{GeneralizedGrassmann{n, k, 𝔽}, Any}} where {n, k, 𝔽}","page":"Generalized Grassmann","title":"ManifoldsBase.check_point","text":"check_point(M::GeneralizedGrassmann{n,k,𝔽}, p)\n\nCheck whether p is representing a point on the GeneralizedGrassmann M, i.e. its a n-by-k matrix of unitary column vectors with respect to the B inner prudct and of correct eltype with respect to 𝔽.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedgrassmann.html#ManifoldsBase.check_vector-Union{Tuple{𝔽}, Tuple{k}, Tuple{n}, Tuple{GeneralizedGrassmann{n, k, 𝔽}, Any, Any}} where {n, k, 𝔽}","page":"Generalized Grassmann","title":"ManifoldsBase.check_vector","text":"check_vector(M::GeneralizedGrassmann{n,k,𝔽}, p, X; kwargs...)\n\nCheck whether X is a tangent vector in the tangent space of p on the GeneralizedGrassmann M, i.e. that X is of size and type as well as that\n\n p^mathrmHBX + overlineX^mathrmHBp = 0_k\n\nwhere cdot^mathrmH denotes the complex conjugate transpose or Hermitian, overlinecdot the (elementwise) complex conjugate, and 0_k denotes the k k zero natrix.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedgrassmann.html#ManifoldsBase.distance-Tuple{GeneralizedGrassmann, Any, Any}","page":"Generalized Grassmann","title":"ManifoldsBase.distance","text":"distance(M::GeneralizedGrassmann, p, q)\n\nCompute the Riemannian distance on GeneralizedGrassmann manifold M= mathrmGr(nkB).\n\nThe distance is given by\n\nd_mathrmGr(nkB)(pq) = operatornamenorm(log_p(q))\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedgrassmann.html#ManifoldsBase.injectivity_radius-Tuple{GeneralizedGrassmann}","page":"Generalized Grassmann","title":"ManifoldsBase.injectivity_radius","text":"injectivity_radius(M::GeneralizedGrassmann)\ninjectivity_radius(M::GeneralizedGrassmann, p)\n\nReturn the injectivity radius on the GeneralizedGrassmann M, which is fracπ2.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedgrassmann.html#ManifoldsBase.inner-Union{Tuple{k}, Tuple{n}, Tuple{GeneralizedGrassmann{n, k}, Any, Any, Any}} where {n, k}","page":"Generalized Grassmann","title":"ManifoldsBase.inner","text":"inner(M::GeneralizedGrassmann, p, X, Y)\n\nCompute the inner product for two tangent vectors X, Y from the tangent space of p on the GeneralizedGrassmann manifold M. The formula reads\n\ng_p(XY) = operatornametr(X^mathrmHBY)\n\nwhere cdot^mathrmH denotes the complex conjugate transposed or Hermitian.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedgrassmann.html#ManifoldsBase.is_flat-Tuple{GeneralizedGrassmann}","page":"Generalized Grassmann","title":"ManifoldsBase.is_flat","text":"is_flat(M::GeneralizedGrassmann)\n\nReturn true if GeneralizedGrassmann M is one-dimensional.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedgrassmann.html#ManifoldsBase.manifold_dimension-Union{Tuple{GeneralizedGrassmann{n, k, 𝔽}}, Tuple{𝔽}, Tuple{k}, Tuple{n}} where {n, k, 𝔽}","page":"Generalized Grassmann","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::GeneralizedGrassmann)\n\nReturn the dimension of the GeneralizedGrassmann(n,k,𝔽) manifold M, i.e.\n\ndim operatornameGr(nkB) = k(n-k) dim_ℝ 𝔽\n\nwhere dim_ℝ 𝔽 is the real_dimension of 𝔽.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedgrassmann.html#ManifoldsBase.project-Tuple{GeneralizedGrassmann, Any, Any}","page":"Generalized Grassmann","title":"ManifoldsBase.project","text":"project(M::GeneralizedGrassmann, p, X)\n\nProject the n-by-k X onto the tangent space of p on the GeneralizedGrassmann M, which is computed by\n\noperatornameproj_p(X) = X - pp^mathrmHB^mathrmTX\n\nwhere cdot^mathrmH denotes the complex conjugate transposed or Hermitian and cdot^mathrmT the transpose.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedgrassmann.html#ManifoldsBase.project-Tuple{GeneralizedGrassmann, Any}","page":"Generalized Grassmann","title":"ManifoldsBase.project","text":"project(M::GeneralizedGrassmann, p)\n\nProject p from the embedding onto the GeneralizedGrassmann M, i.e. compute q as the polar decomposition of p such that q^mathrmHBq is the identity, where cdot^mathrmH denotes the Hermitian, i.e. complex conjugate transpose.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedgrassmann.html#ManifoldsBase.representation_size-Union{Tuple{GeneralizedGrassmann{n, k}}, Tuple{k}, Tuple{n}} where {n, k}","page":"Generalized Grassmann","title":"ManifoldsBase.representation_size","text":"representation_size(M::GeneralizedGrassmann{n,k})\n\nReturn the represenation size or matrix dimension of a point on the GeneralizedGrassmann M, i.e. (nk) for both the real-valued and the complex value case.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedgrassmann.html#ManifoldsBase.retract-Tuple{GeneralizedGrassmann, Any, Any, PolarRetraction}","page":"Generalized Grassmann","title":"ManifoldsBase.retract","text":"retract(M::GeneralizedGrassmann, p, X, ::PolarRetraction)\n\nCompute the SVD-based retraction PolarRetraction on the GeneralizedGrassmann M, by projecting p + X onto M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedgrassmann.html#ManifoldsBase.zero_vector-Tuple{GeneralizedGrassmann, Vararg{Any}}","page":"Generalized Grassmann","title":"ManifoldsBase.zero_vector","text":"zero_vector(M::GeneralizedGrassmann, p)\n\nReturn the zero tangent vector from the tangent space at p on the GeneralizedGrassmann M, which is given by a zero matrix the same size as p.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/generalizedgrassmann.html#Statistics.mean-Tuple{GeneralizedGrassmann, Vararg{Any}}","page":"Generalized Grassmann","title":"Statistics.mean","text":"mean(\n M::GeneralizedGrassmann,\n x::AbstractVector,\n [w::AbstractWeights,]\n method = GeodesicInterpolationWithinRadius(π/4);\n kwargs...,\n)\n\nCompute the Riemannian mean of x using GeodesicInterpolationWithinRadius.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/skewhermitian.html#Skew-hermitian-matrices","page":"Skew-Hermitian matrices","title":"Skew-hermitian matrices","text":"","category":"section"},{"location":"manifolds/skewhermitian.html","page":"Skew-Hermitian matrices","title":"Skew-Hermitian matrices","text":"Modules = [Manifolds]\nPages = [\"manifolds/SkewHermitian.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/skewhermitian.html#Manifolds.SkewHermitianMatrices","page":"Skew-Hermitian matrices","title":"Manifolds.SkewHermitianMatrices","text":"SkewHermitianMatrices{n,𝔽} <: AbstractDecoratorManifold{𝔽}\n\nThe AbstractManifold $ \\operatorname{SkewHerm}(n)$ consisting of the real- or complex-valued skew-hermitian matrices of size n n, i.e. the set\n\noperatornameSkewHerm(n) = biglp 𝔽^n n big p^mathrmH = -p bigr\n\nwhere cdot^mathrmH denotes the Hermitian, i.e. complex conjugate transpose, and the field 𝔽 ℝ ℂ ℍ.\n\nThough it is slightly redundant, usually the matrices are stored as n n arrays.\n\nNote that in this representation, the real-valued part of the diagonal must be zero, which is also reflected in the manifold_dimension.\n\nConstructor\n\nSkewHermitianMatrices(n::Int, field::AbstractNumbers=ℝ)\n\nGenerate the manifold of n n skew-hermitian matrices.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/skewhermitian.html#Manifolds.SkewSymmetricMatrices","page":"Skew-Hermitian matrices","title":"Manifolds.SkewSymmetricMatrices","text":"SkewSymmetricMatrices{n}\n\nGenerate the manifold of n n real skew-symmetric matrices. This is equivalent to SkewHermitianMatrices(n, ℝ).\n\nConstructor\n\nSkewSymmetricMatrices(n::Int)\n\n\n\n\n\n","category":"type"},{"location":"manifolds/skewhermitian.html#ManifoldsBase.Weingarten-Tuple{SkewSymmetricMatrices, Any, Any, Any}","page":"Skew-Hermitian matrices","title":"ManifoldsBase.Weingarten","text":"Y = Weingarten(M::SkewSymmetricMatrices, p, X, V)\nWeingarten!(M::SkewSymmetricMatrices, Y, p, X, V)\n\nCompute the Weingarten map mathcal W_p at p on the SkewSymmetricMatrices M with respect to the tangent vector X in T_pmathcal M and the normal vector V in N_pmathcal M.\n\nSince this a flat space by itself, the result is always the zero tangent vector.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/skewhermitian.html#ManifoldsBase.check_point-Union{Tuple{𝔽}, Tuple{n}, Tuple{SkewHermitianMatrices{n, 𝔽}, Any}} where {n, 𝔽}","page":"Skew-Hermitian matrices","title":"ManifoldsBase.check_point","text":"check_point(M::SkewHermitianMatrices{n,𝔽}, p; kwargs...)\n\nCheck whether p is a valid manifold point on the SkewHermitianMatrices M, i.e. whether p is a skew-hermitian matrix of size (n,n) with values from the corresponding AbstractNumbers 𝔽.\n\nThe tolerance for the skew-symmetry of p can be set using kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/skewhermitian.html#ManifoldsBase.check_vector-Tuple{SkewHermitianMatrices, Any, Any}","page":"Skew-Hermitian matrices","title":"ManifoldsBase.check_vector","text":"check_vector(M::SkewHermitianMatrices{n}, p, X; kwargs... )\n\nCheck whether X is a tangent vector to manifold point p on the SkewHermitianMatrices M, i.e. X must be a skew-hermitian matrix of size (n,n) and its values have to be from the correct AbstractNumbers. The tolerance for the skew-symmetry of p and X can be set using kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/skewhermitian.html#ManifoldsBase.is_flat-Tuple{SkewHermitianMatrices}","page":"Skew-Hermitian matrices","title":"ManifoldsBase.is_flat","text":"is_flat(::SkewHermitianMatrices)\n\nReturn true. SkewHermitianMatrices is a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/skewhermitian.html#ManifoldsBase.manifold_dimension-Union{Tuple{SkewHermitianMatrices{N, 𝔽}}, Tuple{𝔽}, Tuple{N}} where {N, 𝔽}","page":"Skew-Hermitian matrices","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::SkewHermitianMatrices{n,𝔽})\n\nReturn the dimension of the SkewHermitianMatrices matrix M over the number system 𝔽, i.e.\n\ndim mathrmSkewHerm(nℝ) = fracn(n+1)2 dim_ℝ 𝔽 - n\n\nwhere dim_ℝ 𝔽 is the real_dimension of 𝔽. The first term corresponds to only the upper triangular elements of the matrix being unique, and the second term corresponds to the constraint that the real part of the diagonal be zero.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/skewhermitian.html#ManifoldsBase.project-Tuple{SkewHermitianMatrices, Any, Any}","page":"Skew-Hermitian matrices","title":"ManifoldsBase.project","text":"project(M::SkewHermitianMatrices, p, X)\n\nProject the matrix X onto the tangent space at p on the SkewHermitianMatrices M,\n\noperatornameproj_p(X) = frac12 bigl( X - X^mathrmH bigr)\n\nwhere cdot^mathrmH denotes the Hermitian, i.e. complex conjugate transposed.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/skewhermitian.html#ManifoldsBase.project-Tuple{SkewHermitianMatrices, Any}","page":"Skew-Hermitian matrices","title":"ManifoldsBase.project","text":"project(M::SkewHermitianMatrices, p)\n\nProjects p from the embedding onto the SkewHermitianMatrices M, i.e.\n\noperatornameproj_operatornameSkewHerm(n)(p) = frac12 bigl( p - p^mathrmH bigr)\n\nwhere cdot^mathrmH denotes the Hermitian, i.e. complex conjugate transposed.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/tucker.html#Tucker","page":"Tucker","title":"Tucker manifold","text":"","category":"section"},{"location":"manifolds/tucker.html","page":"Tucker","title":"Tucker","text":"Modules = [Manifolds]\nPages = [\"Tucker.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/tucker.html#Manifolds.Tucker","page":"Tucker","title":"Manifolds.Tucker","text":"Tucker{N, R, D, 𝔽} <: AbstractManifold{𝔽}\n\nThe manifold of N_1 times dots times N_D real-valued or complex-valued tensors of fixed multilinear rank (R_1 dots R_D) . If R_1 = dots = R_D = 1, this is the Segre manifold, i.e., the set of rank-1 tensors.\n\nRepresentation in HOSVD format\n\nLet mathbbF be the real or complex numbers. Any tensor p on the Tucker manifold can be represented as a multilinear product in HOSVD [LMV00] form\n\np = (U_1dotsU_D) cdot mathcalC\n\nwhere mathcal C in mathbbF^R_1 times dots times R_D and, for d=1dotsD, the matrix U_d in mathbbF^N_d times R_d contains the singular vectors of the dth unfolding of mathcalA\n\nTangent space\n\nThe tangent space to the Tucker manifold at p = (U_1dotsU_D) cdot mathcalC is [KL10]\n\nT_p mathcalM =\nbigl\n(U_1dotsU_D) cdot mathcalC^prime\n+ sum_d=1^D bigl(\n (U_1 dots U_d-1 U_d^prime U_d+1 dots U_D)\n cdot mathcalC\nbigr)\nbigr\n\nwhere mathcalC^prime is arbitrary, U_d^mathrmH is the Hermitian adjoint of U_d, and U_d^mathrmH U_d^prime = 0 for all d.\n\nConstructor\n\nTucker(N::NTuple{D, Int}, R::NTuple{D, Int}[, field = ℝ])\n\nGenerate the manifold of field-valued tensors of dimensions N[1] × … × N[D] and multilinear rank R = (R[1], …, R[D]).\n\n\n\n\n\n","category":"type"},{"location":"manifolds/tucker.html#Manifolds.TuckerPoint","page":"Tucker","title":"Manifolds.TuckerPoint","text":"TuckerPoint{T,D}\n\nAn order D tensor of fixed multilinear rank and entries of type T, which makes it a point on the Tucker manifold. The tensor is represented in HOSVD form.\n\nConstructors:\n\nTuckerPoint(core::AbstractArray{T,D}, factors::Vararg{<:AbstractMatrix{T},D}) where {T,D}\n\nConstruct an order D tensor of element type T that can be represented as the multilinear product (factors[1], …, factors[D]) ⋅ core. It is assumed that the dimensions of the core are the multilinear rank of the tensor and that the matrices factors each have full rank. No further assumptions are made.\n\nTuckerPoint(p::AbstractArray{T,D}, mlrank::NTuple{D,Int}) where {T,D}\n\nThe low-multilinear rank tensor arising from the sequentially truncated the higher-order singular value decomposition of the D-dimensional array p of type T. The singular values are truncated to get a multilinear rank mlrank [VVM12].\n\n\n\n\n\n","category":"type"},{"location":"manifolds/tucker.html#Manifolds.TuckerTVector","page":"Tucker","title":"Manifolds.TuckerTVector","text":"TuckerTVector{T, D} <: TVector\n\nTangent vector to the D-th order Tucker manifold at p = (U_1dotsU_D) mathcalC. The numbers are of type T and the vector is represented as\n\nX =\n(U_1dotsU_D) cdot mathcalC^prime +\nsum_d=1^D (U_1dotsU_d-1U_d^primeU_d+1dotsU_D) cdot mathcalC\n\nwhere U_d^mathrmH U_d^prime = 0.\n\nConstructor\n\nTuckerTVector(C′::Array{T,D}, U′::NTuple{D,Matrix{T}}) where {T,D}\n\nConstructs a Dth order TuckerTVector of number type T with C^prime and U^prime, so that, together with a TuckerPoint p as above, the tangent vector can be represented as X in the above expression.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/tucker.html#Base.convert-Union{Tuple{D}, Tuple{T}, Tuple{𝔽}, Tuple{Type{Matrix{T}}, CachedBasis{𝔽, DefaultOrthonormalBasis{𝔽, ManifoldsBase.TangentSpaceType}, Manifolds.HOSVDBasis{T, D}}}} where {𝔽, T, D}","page":"Tucker","title":"Base.convert","text":"Base.convert(::Type{Matrix{T}}, basis::CachedBasis{𝔽,DefaultOrthonormalBasis{𝔽, TangentSpaceType},HOSVDBasis{T, D}}) where {𝔽, T, D}\nBase.convert(::Type{Matrix}, basis::CachedBasis{𝔽,DefaultOrthonormalBasis{𝔽, TangentSpaceType},HOSVDBasis{T, D}}) where {𝔽, T, D}\n\nConvert a HOSVD-derived cached basis from [DBV21] of the Dth order Tucker manifold with number type T to a matrix. The columns of this matrix are the vectorisations of the embeddings of the basis vectors.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/tucker.html#Base.foreach","page":"Tucker","title":"Base.foreach","text":"Base.foreach(f, M::Tucker, p::TuckerPoint, basis::AbstractBasis, indices=1:manifold_dimension(M))\n\nLet basis be and AbstractBasis at a point p on M. Suppose f is a function that takes an index and a vector as an argument. This function applies f to i and the ith basis vector sequentially for each i in indices. Using a CachedBasis may speed up the computation.\n\nNOTE: The i'th basis vector is overwritten in each iteration. If any information about the vector is to be stored, f must make a copy.\n\n\n\n\n\n","category":"function"},{"location":"manifolds/tucker.html#Base.ndims-Union{Tuple{TuckerPoint{T, D}}, Tuple{D}, Tuple{T}} where {T, D}","page":"Tucker","title":"Base.ndims","text":"Base.ndims(p::TuckerPoint{T,D}) where {T,D}\n\nThe order of the tensor corresponding to the TuckerPoint p, i.e., D.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/tucker.html#Base.size-Tuple{TuckerPoint}","page":"Tucker","title":"Base.size","text":"Base.size(p::TuckerPoint)\n\nThe dimensions of a TuckerPoint p, when regarded as a full tensor (see embed).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/tucker.html#ManifoldsBase.check_point-Union{Tuple{D}, Tuple{R}, Tuple{N}, Tuple{Tucker{N, R, D}, Any}} where {N, R, D}","page":"Tucker","title":"ManifoldsBase.check_point","text":"check_point(M::Tucker{N,R,D}, p; kwargs...) where {N,R,D}\n\nCheck whether the multidimensional array or TuckerPoint p is a point on the Tucker manifold, i.e. it is a Dth order N[1] × … × N[D] tensor of multilinear rank (R[1], …, R[D]). The keyword arguments are passed to the matrix rank function applied to the unfoldings. For a TuckerPoint it is checked that the point is in correct HOSVD form.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/tucker.html#ManifoldsBase.check_vector-Union{Tuple{D}, Tuple{T}, Tuple{R}, Tuple{N}, Tuple{Tucker{N, R, D}, TuckerPoint{T, D}, TuckerTVector}} where {N, R, T, D}","page":"Tucker","title":"ManifoldsBase.check_vector","text":"check_vector(M::Tucker{N,R,D}, p::TuckerPoint{T,D}, X::TuckerTVector) where {N,R,T,D}\n\nCheck whether a TuckerTVector X is is in the tangent space to the Dth order Tucker manifold M at the Dth order TuckerPoint p. This is the case when the dimensions of the factors in X agree with those of p and the factor matrices of X are in the orthogonal complement of the HOSVD factors of p.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/tucker.html#ManifoldsBase.embed-Tuple{Tucker, Any, TuckerPoint}","page":"Tucker","title":"ManifoldsBase.embed","text":"embed(::Tucker{N,R,D}, p::TuckerPoint) where {N,R,D}\n\nConvert a TuckerPoint p on the rank R Tucker manifold to a full N[1] × … × N[D]-array by evaluating the Tucker decomposition.\n\nembed(::Tucker{N,R,D}, p::TuckerPoint, X::TuckerTVector) where {N,R,D}\n\nConvert a tangent vector X with base point p on the rank R Tucker manifold to a full tensor, represented as an N[1] × … × N[D]-array.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/tucker.html#ManifoldsBase.get_basis-Union{Tuple{𝔽}, Tuple{Tucker, TuckerPoint}, Tuple{Tucker, TuckerPoint, DefaultOrthonormalBasis{𝔽, ManifoldsBase.TangentSpaceType}}} where 𝔽","page":"Tucker","title":"ManifoldsBase.get_basis","text":"get_basis(:: Tucker, p::TuckerPoint, basisType::DefaultOrthonormalBasis{𝔽, TangentSpaceType}) where 𝔽\n\nAn implicitly stored basis of the tangent space to the Tucker manifold. Assume p = (U_1dotsU_D) cdot mathcalC is in HOSVD format and that, for d=1dotsD, the singular values of the d'th unfolding are sigma_dj, with j = 1dotsR_d. The basis of the tangent space is as follows: [DBV21]\n\nbigl\n(U_1dotsU_D) e_i\nbigr cup bigl\n(U_1dots sigma_dj^-1 U_d^perp e_i e_j^TdotsU_D) cdot mathcalC\nbigr\n\nfor all d = 1dotsD and all canonical basis vectors e_i and e_j. Every U_d^perp is such that U_d quad U_d^perp forms an orthonormal basis of mathbbR^N_d.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/tucker.html#ManifoldsBase.inner-Tuple{Tucker, TuckerPoint, TuckerTVector, TuckerTVector}","page":"Tucker","title":"ManifoldsBase.inner","text":"inner(M::Tucker, p::TuckerPoint, X::TuckerTVector, Y::TuckerTVector)\n\nThe Euclidean inner product between tangent vectors X and X at the point p on the Tucker manifold. This is equal to embed(M, p, X) ⋅ embed(M, p, Y).\n\ninner(::Tucker, A::TuckerPoint, X::TuckerTVector, Y)\ninner(::Tucker, A::TuckerPoint, X, Y::TuckerTVector)\n\nThe Euclidean inner product between X and Y where X is a vector tangent to the Tucker manifold at p and Y is a vector in the ambient space or vice versa. The vector in the ambient space is represented as a full tensor, i.e., a multidimensional array.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/tucker.html#ManifoldsBase.inverse_retract-Tuple{Tucker, Any, TuckerPoint, TuckerPoint, ProjectionInverseRetraction}","page":"Tucker","title":"ManifoldsBase.inverse_retract","text":"inverse_retract(M::Tucker, p::TuckerPoint, q::TuckerPoint, ::ProjectionInverseRetraction)\n\nThe projection inverse retraction on the Tucker manifold interprets q as a point in the ambient Euclidean space (see embed) and projects it onto the tangent space at to M at p.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/tucker.html#ManifoldsBase.is_flat-Tuple{Tucker}","page":"Tucker","title":"ManifoldsBase.is_flat","text":"is_flat(::Tucker)\n\nReturn false. Tucker is not a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/tucker.html#ManifoldsBase.manifold_dimension-Union{Tuple{Tucker{n⃗, r⃗}}, Tuple{r⃗}, Tuple{n⃗}} where {n⃗, r⃗}","page":"Tucker","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(::Tucker{N,R,D}) where {N,R,D}\n\nThe dimension of the manifold of N_1 times dots times N_D tensors of multilinear rank (R_1 dots R_D), i.e.\n\nmathrmdim(mathcalM) = prod_d=1^D R_d + sum_d=1^D R_d (N_d - R_d)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/tucker.html#ManifoldsBase.project-Tuple{Tucker, Any, TuckerPoint, Any}","page":"Tucker","title":"ManifoldsBase.project","text":"project(M::Tucker, p::TuckerPoint, X)\n\nThe least-squares projection of a dense tensor X onto the tangent space to M at p.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/tucker.html#ManifoldsBase.retract-Tuple{Tucker, Any, Any, PolarRetraction}","page":"Tucker","title":"ManifoldsBase.retract","text":"retract(::Tucker, p::TuckerPoint, X::TuckerTVector, ::PolarRetraction)\n\nThe truncated HOSVD-based retraction [KSV13] to the Tucker manifold, i.e. the result is the sequentially tuncated HOSVD approximation of p + X.\n\nIn the exceptional case that the multilinear rank of p + X is lower than that of p, this retraction produces a boundary point, which is outside the manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/tucker.html#ManifoldsBase.zero_vector-Tuple{Tucker, TuckerPoint}","page":"Tucker","title":"ManifoldsBase.zero_vector","text":"zero_vector(::Tucker, p::TuckerPoint)\n\nThe zero element in the tangent space to p on the Tucker manifold, represented as a TuckerTVector.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/tucker.html#Literature","page":"Tucker","title":"Literature","text":"","category":"section"},{"location":"manifolds/elliptope.html#Elliptope","page":"Elliptope","title":"Elliptope","text":"","category":"section"},{"location":"manifolds/elliptope.html","page":"Elliptope","title":"Elliptope","text":"Modules = [Manifolds]\nPages = [\"manifolds/Elliptope.jl\"]\nOrder = [:type,:function]","category":"page"},{"location":"manifolds/elliptope.html#Manifolds.Elliptope","page":"Elliptope","title":"Manifolds.Elliptope","text":"Elliptope{N,K} <: AbstractDecoratorManifold{ℝ}\n\nThe Elliptope manifold, also known as the set of correlation matrices, consists of all symmetric positive semidefinite matrices of rank k with unit diagonal, i.e.,\n\nbeginaligned\nmathcal E(nk) =\nbiglp ℝ^n n big a^mathrmTpa geq 0 text for all a ℝ^n\np_ii = 1 text for all i=1ldotsn\ntextand p = qq^mathrmT text for q in ℝ^n k text with operatornamerank(p) = operatornamerank(q) = k\nbigr\nendaligned\n\nAnd this manifold is working solely on the matrices q. Note that this q is not unique, indeed for any orthogonal matrix A we have (qA)(qA)^mathrmT = qq^mathrmT = p, so the manifold implemented here is the quotient manifold. The unit diagonal translates to unit norm columns of q.\n\nThe tangent space at p, denoted T_pmathcal E(nk), is also represented by matrices Yin ℝ^n k and reads as\n\nT_pmathcal E(nk) = bigl\nX ℝ^n nX = qY^mathrmT + Yq^mathrmT text with X_ii = 0 text for i=1ldotsn\nbigr\n\nendowed with the Euclidean metric from the embedding, i.e. from the ℝ^n k\n\nThis manifold was for example investigated in[JBAS10].\n\nConstructor\n\nElliptope(n,k)\n\ngenerates the manifold mathcal E(nk) subset ℝ^n n.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/elliptope.html#ManifoldsBase.check_point-Union{Tuple{K}, Tuple{N}, Tuple{Elliptope{N, K}, Any}} where {N, K}","page":"Elliptope","title":"ManifoldsBase.check_point","text":"check_point(M::Elliptope, q; kwargs...)\n\nchecks, whether q is a valid reprsentation of a point p=qq^mathrmT on the Elliptope M, i.e. is a matrix of size (N,K), such that p is symmetric positive semidefinite and has unit trace. Since by construction p is symmetric, this is not explicitly checked. Since p is by construction positive semidefinite, this is not checked. The tolerances for positive semidefiniteness and unit trace can be set using the kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/elliptope.html#ManifoldsBase.check_vector-Union{Tuple{K}, Tuple{N}, Tuple{Elliptope{N, K}, Any, Any}} where {N, K}","page":"Elliptope","title":"ManifoldsBase.check_vector","text":"check_vector(M::Elliptope, q, Y; kwargs... )\n\nCheck whether X = qY^mathrmT + Yq^mathrmT is a tangent vector to p=qq^mathrmT on the Elliptope M, i.e. Y has to be of same dimension as q and a X has to be a symmetric matrix with zero diagonal.\n\nThe tolerance for the base point check and zero diagonal can be set using the kwargs.... Note that symmetric of X holds by construction an is not explicitly checked.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/elliptope.html#ManifoldsBase.is_flat-Tuple{Elliptope}","page":"Elliptope","title":"ManifoldsBase.is_flat","text":"is_flat(::Elliptope)\n\nReturn false. Elliptope is not a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/elliptope.html#ManifoldsBase.manifold_dimension-Union{Tuple{Elliptope{N, K}}, Tuple{K}, Tuple{N}} where {N, K}","page":"Elliptope","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::Elliptope)\n\nreturns the dimension of Elliptope M=mathcal E(nk) nk ℕ, i.e.\n\ndim mathcal E(nk) = n(k-1) - frack(k-1)2\n\n\n\n\n\n","category":"method"},{"location":"manifolds/elliptope.html#ManifoldsBase.project-Tuple{Elliptope, Any}","page":"Elliptope","title":"ManifoldsBase.project","text":"project(M::Elliptope, q)\n\nproject q onto the manifold Elliptope M, by normalizing the rows of q.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/elliptope.html#ManifoldsBase.project-Tuple{Elliptope, Vararg{Any}}","page":"Elliptope","title":"ManifoldsBase.project","text":"project(M::Elliptope, q, Y)\n\nProject Y onto the tangent space at q, i.e. row-wise onto the oblique manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/elliptope.html#ManifoldsBase.representation_size-Union{Tuple{Elliptope{N, K}}, Tuple{K}, Tuple{N}} where {N, K}","page":"Elliptope","title":"ManifoldsBase.representation_size","text":"representation_size(M::Elliptope)\n\nReturn the size of an array representing an element on the Elliptope manifold M, i.e. n k, the size of such factor of p=qq^mathrmT on mathcal M = mathcal E(nk).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/elliptope.html#ManifoldsBase.retract-Tuple{Elliptope, Any, Any, ProjectionRetraction}","page":"Elliptope","title":"ManifoldsBase.retract","text":"retract(M::Elliptope, q, Y, ::ProjectionRetraction)\n\ncompute a projection based retraction by projecting q+Y back onto the manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/elliptope.html#ManifoldsBase.vector_transport_to-Tuple{Elliptope, Any, Any, Any, ProjectionTransport}","page":"Elliptope","title":"ManifoldsBase.vector_transport_to","text":"vector_transport_to(M::Elliptope, p, X, q)\n\ntransport the tangent vector X at p to q by projecting it onto the tangent space at q.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/elliptope.html#ManifoldsBase.zero_vector-Tuple{Elliptope, Vararg{Any}}","page":"Elliptope","title":"ManifoldsBase.zero_vector","text":"zero_vector(M::Elliptope,p)\n\nreturns the zero tangent vector in the tangent space of the symmetric positive definite matrix p on the Elliptope manifold M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/elliptope.html#Literature","page":"Elliptope","title":"Literature","text":"","category":"section"},{"location":"manifolds/multinomial.html#Multinomial-matrices","page":"Multinomial matrices","title":"Multinomial matrices","text":"","category":"section"},{"location":"manifolds/multinomial.html","page":"Multinomial matrices","title":"Multinomial matrices","text":"Modules = [Manifolds]\nPages = [\"manifolds/Multinomial.jl\"]\nOrder = [:type]","category":"page"},{"location":"manifolds/multinomial.html#Manifolds.MultinomialMatrices","page":"Multinomial matrices","title":"Manifolds.MultinomialMatrices","text":"MultinomialMatrices{n,m} <: AbstractPowerManifold{ℝ}\n\nThe multinomial manifold consists of m column vectors, where each column is of length n and unit norm, i.e.\n\nmathcalMN(nm) coloneqq bigl p ℝ^nm big p_ij 0 text for all i=1n j=1m text and p^mathrmTmathbb1_m = mathbb1_nbigr\n\nwhere mathbb1_k is the vector of length k containing ones.\n\nThis yields exactly the same metric as considering the product metric of the probablity vectors, i.e. PowerManifold of the (n-1)-dimensional ProbabilitySimplex.\n\nThe ProbabilitySimplex is stored internally within M.manifold, such that all functions of AbstractPowerManifold can be used directly.\n\nConstructor\n\nMultinomialMatrices(n, m)\n\nGenerate the manifold of matrices mathbb R^nm such that the m columns are discrete probability distributions, i.e. sum up to one.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/multinomial.html#Functions","page":"Multinomial matrices","title":"Functions","text":"","category":"section"},{"location":"manifolds/multinomial.html","page":"Multinomial matrices","title":"Multinomial matrices","text":"Most functions are directly implemented for an AbstractPowerManifold with ArrayPowerRepresentation except the following special cases:","category":"page"},{"location":"manifolds/multinomial.html","page":"Multinomial matrices","title":"Multinomial matrices","text":"Modules = [Manifolds]\nPages = [\"manifolds/Multinomial.jl\"]\nOrder = [:function]","category":"page"},{"location":"manifolds/multinomial.html#ManifoldsBase.check_point-Tuple{MultinomialMatrices, Any}","page":"Multinomial matrices","title":"ManifoldsBase.check_point","text":"check_point(M::MultinomialMatrices, p)\n\nChecks whether p is a valid point on the MultinomialMatrices(m,n) M, i.e. is a matrix of m discrete probability distributions as columns from mathbb R^n, i.e. each column is a point from ProbabilitySimplex(n-1).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/multinomial.html#ManifoldsBase.check_vector-Union{Tuple{m}, Tuple{n}, Tuple{MultinomialMatrices{n, m}, Any, Any}} where {n, m}","page":"Multinomial matrices","title":"ManifoldsBase.check_vector","text":"check_vector(M::MultinomialMatrices p, X; kwargs...)\n\nChecks whether X is a valid tangent vector to p on the MultinomialMatrices M. This means, that p is valid, that X is of correct dimension and columnswise a tangent vector to the columns of p on the ProbabilitySimplex.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplectic.html#Symplectic","page":"Symplectic","title":"Symplectic","text":"","category":"section"},{"location":"manifolds/symplectic.html","page":"Symplectic","title":"Symplectic","text":"The Symplectic manifold, denoted operatornameSp(2n mathbbF), is a closed, embedded, submanifold of mathbbF^2n times 2n that represents transformations into symplectic subspaces which keep the canonical symplectic form over mathbbF^2n times 2n invariant under the standard embedding inner product. The canonical symplectic form is a non-degenerate bilinear and skew symmetric map omegacolon mathbbF^2n times mathbbF^2n rightarrow mathbbF, given by omega(x y) = x^T Q_2n y for elements x y in mathbbF^2n, with","category":"page"},{"location":"manifolds/symplectic.html","page":"Symplectic","title":"Symplectic","text":" Q_2n =\n beginbmatrix\n 0_n I_n \n -I_n 0_n\n endbmatrix","category":"page"},{"location":"manifolds/symplectic.html","page":"Symplectic","title":"Symplectic","text":"That means that an element p in operatornameSp(2n) must fulfill the requirement that","category":"page"},{"location":"manifolds/symplectic.html","page":"Symplectic","title":"Symplectic","text":" omega (p x p y) = x^T(p^TQp)y = x^TQy = omega(x y)","category":"page"},{"location":"manifolds/symplectic.html","page":"Symplectic","title":"Symplectic","text":"leading to the requirement on p that p^TQp = Q.","category":"page"},{"location":"manifolds/symplectic.html","page":"Symplectic","title":"Symplectic","text":"The symplectic manifold also forms a group under matrix multiplication, called the textitsymplectic group. Since all the symplectic matrices necessarily have determinant one, the symplectic group operatornameSp(2n mathbbF) is a subgroup of the special linear group, operatornameSL(2n mathbbF). When the underlying field is either mathbbR or mathbbC the symplectic group with a manifold structure constitutes a Lie group, with the Lie Algebra","category":"page"},{"location":"manifolds/symplectic.html","page":"Symplectic","title":"Symplectic","text":" mathfraksp(2nF) = H in mathbbF^2n times 2n Q H + H^T Q = 0","category":"page"},{"location":"manifolds/symplectic.html","page":"Symplectic","title":"Symplectic","text":"This set is also known as the Hamiltonian matrices, which have the property that (QH)^T = QH and are commonly used in physics.","category":"page"},{"location":"manifolds/symplectic.html","page":"Symplectic","title":"Symplectic","text":"Modules = [Manifolds]\nPages = [\"manifolds/Symplectic.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/symplectic.html#Manifolds.ExtendedSymplecticMetric","page":"Symplectic","title":"Manifolds.ExtendedSymplecticMetric","text":"ExtendedSymplecticMetric <: AbstractMetric\n\nThe extension of the RealSymplecticMetric at a point p \\in \\operatorname{Sp}(2n) as an inner product over the embedding space ℝ^2n times 2n, i.e.\n\n langle x y rangle_p = langle p^-1x p^-1rangle_operatornameFr\n = operatornametr(x^mathrmT(pp^mathrmT)^-1y) forall x y in ℝ^2n times 2n\n\n\n\n\n\n","category":"type"},{"location":"manifolds/symplectic.html#Manifolds.RealSymplecticMetric","page":"Symplectic","title":"Manifolds.RealSymplecticMetric","text":"RealSymplecticMetric <: RiemannianMetric\n\nThe canonical Riemannian metric on the symplectic manifold, defined pointwise for p in operatornameSp(2n) by [Fio11]]\n\nbeginalign*\n g_p colon T_poperatornameSp(2n) times T_poperatornameSp(2n) rightarrow ℝ \n g_p(Z_1 Z_2) = operatornametr((p^-1Z_1)^mathrmT (p^-1Z_2))\nendalign*\n\nThis metric is also the default metric for the Symplectic manifold.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/symplectic.html#Manifolds.Symplectic","page":"Symplectic","title":"Manifolds.Symplectic","text":"Symplectic{n, 𝔽} <: AbstractEmbeddedManifold{𝔽, DefaultIsometricEmbeddingType}\n\nThe symplectic manifold consists of all 2n times 2n matrices which preserve the canonical symplectic form over 𝔽^2n 2n times 𝔽^2n 2n,\n\n omegacolon 𝔽^2n 2n times 𝔽^2n 2n rightarrow 𝔽\n quad omega(x y) = p^mathrmT Q_2n q x y in 𝔽^2n 2n\n\nwhere\n\nQ_2n =\nbeginbmatrix\n 0_n I_n \n -I_n 0_n\nendbmatrix\n\nThat is, the symplectic manifold consists of\n\noperatornameSp(2n ℝ) = bigl p ℝ^2n 2n big p^mathrmTQ_2np = Q_2n bigr\n\nwith 0_n and I_n denoting the n n zero-matrix and indentity matrix in ℝ^n times n respectively.\n\nThe tangent space at a point p is given by [BZ21]\n\nbeginalign*\n T_poperatornameSp(2n)\n = X in mathbbR^2n times 2n p^TQ_2nX + X^TQ_2np = 0 \n = X = pQS S R^2n 2n S^mathrmT = S \nendalign*\n\nConstructor\n\nSymplectic(2n, field=ℝ) -> Symplectic{div(2n, 2), field}()\n\nGenerate the (real-valued) symplectic manifold of 2n times 2n symplectic matrices. The constructor for the Symplectic manifold accepts the even column/row embedding dimension 2n for the real symplectic manifold, ℝ^2n 2n.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/symplectic.html#Manifolds.SymplecticMatrix","page":"Symplectic","title":"Manifolds.SymplecticMatrix","text":"SymplecticMatrix{T}\n\nA lightweight structure to represent the action of the matrix representation of the canonical symplectic form,\n\nQ_2n(λ) = λ\nbeginbmatrix\n0_n I_n \n -I_n 0_n\nendbmatrix quad in ℝ^2n times 2n\n\nsuch that the canonical symplectic form is represented by\n\nomega_2n(x y) = x^mathrmTQ_2n(1)y quad x y in ℝ^2n\n\nThe entire matrix is however not instantiated in memory, instead a scalar λ of type T is stored, which is used to keep track of scaling and transpose operations applied to each SymplecticMatrix. For example, given Q = SymplecticMatrix(1.0) represented as 1.0*[0 I; -I 0], the adjoint Q' returns SymplecticMatrix(-1.0) = (-1.0)*[0 I; -I 0].\n\n\n\n\n\n","category":"type"},{"location":"manifolds/symplectic.html#Base.exp-Tuple{Symplectic, Vararg{Any}}","page":"Symplectic","title":"Base.exp","text":"exp(M::Symplectic, p, X)\nexp!(M::Symplectic, q, p, X)\n\nThe Exponential mapping on the Symplectic manifold with the RealSymplecticMetric Riemannian metric.\n\nFor the point p in operatornameSp(2n) the exponential mapping along the tangent vector X in T_poperatornameSp(2n) is computed as [WSF18]\n\n operatornameexp_p(X) = p operatornameExp((p^-1X)^mathrmT)\n operatornameExp(p^-1X - (p^-1X)^mathrmT)\n\nwhere operatornameExp(cdot) denotes the matrix exponential.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplectic.html#Base.inv-Union{Tuple{n}, Tuple{Symplectic{n, ℝ}, Any}} where n","page":"Symplectic","title":"Base.inv","text":"inv(::Symplectic, A)\ninv!(::Symplectic, A)\n\nCompute the symplectic inverse A^+ of matrix A ℝ^2n 2n. Given a matrix\n\nA ℝ^2n 2nquad\nA =\nbeginbmatrix\nA_11 A_12 \nA_21 A_2 2\nendbmatrix\n\nthe symplectic inverse is defined as:\n\nA^+ = Q_2n^mathrmT A^mathrmT Q_2n\n\nwhere\n\nQ_2n =\nbeginbmatrix\n0_n I_n \n -I_n 0_n\nendbmatrix\n\nThe symplectic inverse of A can be expressed explicitly as:\n\nA^+ =\nbeginbmatrix\n A_2 2^mathrmT -A_1 2^mathrmT 12mm\n -A_2 1^mathrmT A_1 1^mathrmT\nendbmatrix\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplectic.html#Base.rand-Tuple{Symplectic}","page":"Symplectic","title":"Base.rand","text":"rand(::SymplecticStiefel; vector_at=nothing,\n hamiltonian_norm = (vector_at === nothing ? 1/2 : 1.0))\n\nGenerate a random point on operatornameSp(2n) or a random tangent vector X in T_poperatornameSp(2n) if vector_at is set to a point p in operatornameSp(2n).\n\nA random point on operatornameSp(2n) is constructed by generating a random Hamiltonian matrix Ω in mathfraksp(2nF) with norm hamiltonian_norm, and then transforming it to a symplectic matrix by applying the Cayley transform\n\n operatornamecaycolon mathfraksp(2nF) rightarrow operatornameSp(2n)\n Omega mapsto (I - Omega)^-1(I + Omega)\n\nTo generate a random tangent vector in T_poperatornameSp(2n), this code employs the second tangent vector space parametrization of Symplectic. It first generates a random symmetric matrix S by S = randn(2n, 2n) and then symmetrizes it as S = S + S'. Then S is normalized to have Frobenius norm of hamiltonian_norm and X = pQS is returned, where Q is the SymplecticMatrix.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplectic.html#ManifoldDiff.gradient-Tuple{Symplectic, Any, Any, ManifoldDiff.RiemannianProjectionBackend}","page":"Symplectic","title":"ManifoldDiff.gradient","text":"gradient(M::Symplectic, f, p, backend::RiemannianProjectionBackend;\n extended_metric=true)\ngradient!(M::Symplectic, f, p, backend::RiemannianProjectionBackend;\n extended_metric=true)\n\nCompute the manifold gradient textgradf(p) of a scalar function f colon operatornameSp(2n) rightarrow ℝ at p in operatornameSp(2n).\n\nThe element textgradf(p) is found as the Riesz representer of the differential textDf(p) colon T_poperatornameSp(2n) rightarrow ℝ w.r.t. the Riemannian metric inner product at p [Fio11]]. That is, textgradf(p) in T_poperatornameSp(2n) solves the relation\n\n g_p(textgradf(p) X) = textDf(p) quadforall X in T_poperatornameSp(2n)\n\nThe default behaviour is to first change the representation of the Euclidean gradient from the Euclidean metric to the RealSymplecticMetric at p, and then we projecting the result onto the correct tangent tangent space T_poperatornameSp(2n ℝ) w.r.t the Riemannian metric g_p extended to the entire embedding space.\n\nArguments:\n\nextended_metric = true: If true, compute the gradient textgradf(p) by first changing the representer of the Euclidean gradient of a smooth extension of f, f(p), w.r.t. the RealSymplecticMetric at p extended to the entire embedding space, before projecting onto the correct tangent vector space w.r.t. the same extended metric g_p. If false, compute the gradient by first projecting f(p) onto the tangent vector space, before changing the representer in the tangent vector space to comply with the RealSymplecticMetric.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplectic.html#Manifolds.project_normal!-Union{Tuple{𝔽}, Tuple{n}, Tuple{m}, Tuple{MetricManifold{𝔽, Euclidean{Tuple{m, n}, 𝔽}, ExtendedSymplecticMetric}, Any, Any, Any}} where {m, n, 𝔽}","page":"Symplectic","title":"Manifolds.project_normal!","text":"project_normal!(::MetricManifold{𝔽,Euclidean,ExtendedSymplecticMetric}, Y, p, X)\n\nProject onto the normal of the tangent space (T_poperatornameSp(2n))^perp_g at a point p operatornameSp(2n), relative to the riemannian metric g RealSymplecticMetric. That is,\n\n(T_poperatornameSp(2n))^perp_g = Y in mathbbR^2n times 2n \n g_p(Y X) = 0 forall X in T_poperatornameSp(2n)\n\nThe closed form projection operator onto the normal space is given by [GSAS21]\n\noperatornameP^(T_poperatornameSp(2n))perp_g_p(X) = pQoperatornameskew(p^mathrmTQ^mathrmTX)\n\nwhere operatornameskew(A) = frac12(A - A^mathrmT). This function is not exported.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplectic.html#Manifolds.symplectic_inverse_times-Union{Tuple{n}, Tuple{Symplectic{n}, Any, Any}} where n","page":"Symplectic","title":"Manifolds.symplectic_inverse_times","text":"symplectic_inverse_times(::Symplectic, p, q)\nsymplectic_inverse_times!(::Symplectic, A, p, q)\n\nDirectly compute the symplectic inverse of p in operatornameSp(2n), multiplied with q in operatornameSp(2n). That is, this function efficiently computes p^+q = (Q_2np^mathrmTQ_2n)q in ℝ^2n times 2n, where Q_2n is the SymplecticMatrix of size 2n times 2n.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplectic.html#ManifoldsBase.change_representer-Tuple{Symplectic, EuclideanMetric, Any, Any}","page":"Symplectic","title":"ManifoldsBase.change_representer","text":"change_representer(::Symplectic, ::EuclideanMetric, p, X)\nchange_representer!(::Symplectic, Y, ::EuclideanMetric, p, X)\n\nCompute the representation of a tangent vector ξ T_poperatornameSp(2n ℝ) s.t.\n\n g_p(c_p(ξ) η) = ξ η^textEuc η T_poperatornameSp(2n ℝ)\n\nwith the conversion function\n\n c_p T_poperatornameSp(2n ℝ) rightarrow T_poperatornameSp(2n ℝ) quad\n c_p(ξ) = frac12 pp^mathrmT ξ + frac12 pQ ξ^mathrmT pQ\n\nEach of the terms c_p^1(ξ) = p p^mathrmT ξ and c_p^2(ξ) = pQ ξ^mathrmT pQ from the above definition of c_p(η) are themselves metric compatible in the sense that\n\n c_p^i T_poperatornameSp(2n ℝ) rightarrow mathbbR^2n times 2nquad\n g_p^i(c_p(ξ) η) = ξ η^textEuc η T_poperatornameSp(2n ℝ)\n\nfor i in 1 2. However the range of each function alone is not confined to T_poperatornameSp(2n ℝ), but the convex combination\n\n c_p(ξ) = frac12c_p^1(ξ) + frac12c_p^2(ξ)\n\ndoes have the correct range T_poperatornameSp(2n ℝ).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplectic.html#ManifoldsBase.change_representer-Union{Tuple{n}, Tuple{m}, Tuple{𝔽}, Tuple{MetricManifold{𝔽, Euclidean{Tuple{m, n}, 𝔽}, ExtendedSymplecticMetric}, EuclideanMetric, Any, Any}} where {𝔽, m, n}","page":"Symplectic","title":"ManifoldsBase.change_representer","text":"change_representer(MetMan::MetricManifold{𝔽, Euclidean{Tuple{m, n}, 𝔽}, ExtendedSymplecticMetric},\n EucMet::EuclideanMetric, p, X)\nchange_representer!(MetMan::MetricManifold{𝔽, Euclidean{Tuple{m, n}, 𝔽}, ExtendedSymplecticMetric},\n Y, EucMet::EuclideanMetric, p, X)\n\nChange the representation of a matrix ξ mathbbR^2n times 2n into the inner product space (ℝ^2n times 2n g_p) where the inner product is given by g_p(ξ η) = langle p^-1ξ p^-1η rangle = operatornametr(ξ^mathrmT(pp^mathrmT)^-1η), as the extension of the RealSymplecticMetric onto the entire embedding space.\n\nBy changing the representation we mean to apply a mapping\n\n c_p mathbbR^2n times 2n rightarrow mathbbR^2n times 2n\n\ndefined by requiring that it satisfy the metric compatibility condition\n\n g_p(c_p(ξ) η) = p^-1c_p(ξ) p^-1η = ξ η^textEuc\n η T_poperatornameSp(2n ℝ)\n\nIn this case, we compute the mapping\n\n c_p(ξ) = pp^mathrmT ξ\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplectic.html#ManifoldsBase.check_point-Union{Tuple{ℝ}, Tuple{n}, Tuple{Symplectic{n, ℝ}, Any}} where {n, ℝ}","page":"Symplectic","title":"ManifoldsBase.check_point","text":"check_point(M::Symplectic, p; kwargs...)\n\nCheck whether p is a valid point on the Symplectic M=operatornameSp(2n), i.e. that it has the right AbstractNumbers type and p^+p is (approximately) the identity, where A^+ = Q_2n^mathrmTA^mathrmTQ_2n is the symplectic inverse, with\n\nQ_2n =\nbeginbmatrix\n0_n I_n \n -I_n 0_n\nendbmatrix\n\nThe tolerance can be set with kwargs... (e.g. atol = 1.0e-14).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplectic.html#ManifoldsBase.check_vector-Tuple{Symplectic, Vararg{Any}}","page":"Symplectic","title":"ManifoldsBase.check_vector","text":"check_vector(M::Symplectic, p, X; kwargs...)\n\nChecks whether X is a valid tangent vector at p on the Symplectic M=operatornameSp(2n), i.e. the AbstractNumbers fits and it (approximately) holds that p^TQ_2nX + X^TQ_2np = 0, where\n\nQ_2n =\nbeginbmatrix\n0_n I_n \n -I_n 0_n\nendbmatrix\n\nThe tolerance can be set with kwargs... (e.g. atol = 1.0e-14).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplectic.html#ManifoldsBase.distance-Union{Tuple{n}, Tuple{Symplectic{n}, Any, Any}} where n","page":"Symplectic","title":"ManifoldsBase.distance","text":"distance(M::Symplectic, p, q)\n\nCompute an approximate geodesic distance between two Symplectic matrices p q in operatornameSp(2n), as done in [WSF18].\n\n operatornamedist(p q)\n operatornameLog(p^+q)_operatornameFr\n\nwhere the operatornameLog(cdot) operator is the matrix logarithm.\n\nThis approximation is justified by first recalling the Baker-Campbell-Hausdorf formula,\n\noperatornameLog(operatornameExp(A)operatornameExp(B))\n = A + B + frac12A B + frac112A A B + frac112B B A\n + ldots \n\nThen we write the expression for the exponential map from p to q as\n\n q =\n operatornameexp_p(X)\n =\n p operatornameExp((p^+X)^mathrmT)\n operatornameExp(p^+X - (p^+X)^mathrmT)\n X in T_poperatornameSp\n\nand with the geodesic distance between p and q given by operatornamedist(p q) = X_p = p^+X_operatornameFr we see that\n\n beginalign*\n operatornameLog(p^+q)_operatornameFr\n = operatornameLogleft(\n operatornameExp((p^+X)^mathrmT)\n operatornameExp(p^+X - (p^+X)^mathrmT)\n right)_operatornameFr \n = p^+X + frac12(p^+X)^mathrmT p^+X - (p^+X)^mathrmT\n + ldots _operatornameFr \n p^+X_operatornameFr = operatornamedist(p q)\n endalign*\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplectic.html#ManifoldsBase.inner-Union{Tuple{n}, Tuple{Symplectic{n, ℝ}, Any, Any, Any}} where n","page":"Symplectic","title":"ManifoldsBase.inner","text":"inner(::Symplectic{n, ℝ}, p, X, Y)\n\nCompute the canonical Riemannian inner product RealSymplecticMetric\n\n g_p(X Y) = operatornametr((p^-1X)^mathrmT (p^-1Y))\n\nbetween the two tangent vectors X Y in T_poperatornameSp(2n).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplectic.html#ManifoldsBase.inverse_retract-Tuple{Symplectic, Any, Any, CayleyInverseRetraction}","page":"Symplectic","title":"ManifoldsBase.inverse_retract","text":"inverse_retract(M::Symplectic, p, q, ::CayleyInverseRetraction)\n\nCompute the Cayley Inverse Retraction X = mathcalL_p^operatornameSp(q) such that the Cayley Retraction from p along X lands at q, i.e. mathcalR_p(X) = q [BZ21].\n\nFirst, recall the definition the standard symplectic matrix\n\nQ =\nbeginbmatrix\n 0 I \n-I 0\nendbmatrix\n\nas well as the symplectic inverse of a matrix A, A^+ = Q^mathrmT A^mathrmT Q.\n\nFor p q operatornameSp(2n ℝ) then, we can then define the inverse cayley retraction as long as the following matrices exist.\n\n U = (I + p^+ q)^-1 quad V = (I + q^+ p)^-1\n\nIf that is the case, the inverse cayley retration at p applied to q is\n\nmathcalL_p^operatornameSp(q) = 2pbigl(V - Ubigr) + 2bigl((p + q)U - pbigr)\n T_poperatornameSp(2n)\n\n[BZ21]: > Bendokat, Thomas and Zimmermann, Ralf: \t> The real symplectic Stiefel and Grassmann manifolds: metrics, geodesics and applications \t> arXiv preprint arXiv:2108.12447, 2021.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplectic.html#ManifoldsBase.is_flat-Tuple{Symplectic}","page":"Symplectic","title":"ManifoldsBase.is_flat","text":"is_flat(::Symplectic)\n\nReturn false. Symplectic is not a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplectic.html#ManifoldsBase.manifold_dimension-Union{Tuple{Symplectic{n}}, Tuple{n}} where n","page":"Symplectic","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(::Symplectic{n})\n\nReturns the dimension of the symplectic manifold embedded in ℝ^2n times 2n, i.e.\n\n operatornamedim(operatornameSp(2n)) = (2n + 1)n\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplectic.html#ManifoldsBase.project!-Union{Tuple{𝔽}, Tuple{n}, Tuple{m}, Tuple{MetricManifold{𝔽, Euclidean{Tuple{m, n}, 𝔽}, ExtendedSymplecticMetric}, Any, Any, Any}} where {m, n, 𝔽}","page":"Symplectic","title":"ManifoldsBase.project!","text":"project!(::MetricManifold{𝔽,Euclidean,ExtendedSymplecticMetric}, Y, p, X) where {𝔽}\n\nCompute the projection of X R^2n 2n onto T_poperatornameSp(2n ℝ) w.r.t. the Riemannian metric g RealSymplecticMetric. The closed form projection mapping is given by [GSAS21]\n\n operatornameP^T_poperatornameSp(2n)_g_p(X) = pQoperatornamesym(p^mathrmTQ^mathrmTX)\n\nwhere operatornamesym(A) = frac12(A + A^mathrmT). This function is not exported.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplectic.html#ManifoldsBase.project-Tuple{Symplectic, Any, Any}","page":"Symplectic","title":"ManifoldsBase.project","text":"project(::Symplectic, p, A)\nproject!(::Symplectic, Y, p, A)\n\nGiven a point p in operatornameSp(2n), project an element A in mathbbR^2n times 2n onto the tangent space T_poperatornameSp(2n) relative to the euclidean metric of the embedding mathbbR^2n times 2n.\n\nThat is, we find the element X in T_poperatornameSpSt(2n 2k) which solves the constrained optimization problem\n\n operatornamemin_X in mathbbR^2n times 2n frac12X - A^2 quad\n textst\n h(X) colon= X^mathrmT Q p + p^mathrmT Q X = 0\n\nwhere hcolonmathbbR^2n times 2n rightarrow operatornameskew(2n) defines the restriction of X onto the tangent space T_poperatornameSpSt(2n 2k).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplectic.html#ManifoldsBase.retract-Tuple{Symplectic, Any, Any}","page":"Symplectic","title":"ManifoldsBase.retract","text":"retract(::Symplectic, p, X, ::CayleyRetraction)\nretract!(::Symplectic, q, p, X, ::CayleyRetraction)\n\nCompute the Cayley retraction on p operatornameSp(2n ℝ) in the direction of tangent vector X T_poperatornameSp(2n ℝ), as defined in by Birtea et al in proposition 2 [BCC20].\n\nUsing the symplectic inverse of a matrix A in ℝ^2n times 2n, A^+ = Q_2n^mathrmT A^mathrmT Q_2n where\n\nQ_2n =\nbeginbmatrix\n0_n I_n \n -I_n 0_n\nendbmatrix\n\nthe retraction mathcalRcolon ToperatornameSp(2n) rightarrow operatornameSp(2n) is defined pointwise as\n\nbeginalign*\nmathcalR_p(X) = p operatornamecayleft(frac12p^+Xright) \n = p operatornameexp_11(p^+X) \n = p (2I - p^+X)^-1(2I + p^+X)\nendalign*\n\nHere operatornameexp_11(z) = (2 - z)^-1(2 + z) denotes the Padé (1, 1) approximation to operatornameexp(z).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symplectic.html#Literature","page":"Symplectic","title":"Literature","text":"","category":"section"},{"location":"manifolds/symplectic.html","page":"Symplectic","title":"Symplectic","text":"
    [BZ21]
    \n
    \n
    T. Bendokat and R. Zimmermann. The real symplectic Stiefel and Grassmann manifolds: metrics, geodesics and applications, arXiv Preprint, 2108.12447 (2021).
    \n
    [BCC20]
    \n
    \n
    P. Birtea, I. Caçu and D. Comănescu. Optimization on the real symplectic group. Monatshefte für Mathematik 191, 465–485 (2020).
    \n
    [Fio11]
    \n
    \n
    S. Fiori. Solving Minimal-Distance Problems over the Manifold of Real-Symplectic Matrices. SIAM Journal on Matrix Analysis and Applications 32, 938–968 (2011).
    \n
    [GSAS21]
    \n
    \n
    B. Gao, N. T. Son, P.-A. Absil and T. Stykel. Riemannian Optimization on the Symplectic Stiefel Manifold. SIAM Journal on Optimization 31, 1546–1575 (2021).
    \n
    [WSF18]
    \n
    \n
    J. Wang, H. Sun and S. Fiori. A Riemannian-steepest-descent approach for optimization on the real symplectic group. Mathematical Methods in the Applied Science 41, 4273–4286 (2018).
    \n
    \n
    ","category":"page"},{"location":"manifolds/symmetricpositivedefinite.html#SymmetricPositiveDefiniteSection","page":"Symmetric positive definite","title":"Symmetric positive definite matrices","text":"","category":"section"},{"location":"manifolds/symmetricpositivedefinite.html","page":"Symmetric positive definite","title":"Symmetric positive definite","text":"SymmetricPositiveDefinite","category":"page"},{"location":"manifolds/symmetricpositivedefinite.html#Manifolds.SymmetricPositiveDefinite","page":"Symmetric positive definite","title":"Manifolds.SymmetricPositiveDefinite","text":"SymmetricPositiveDefinite{N} <: AbstractDecoratorManifold{ℝ}\n\nThe manifold of symmetric positive definite matrices, i.e.\n\nmathcal P(n) =\nbigl\np ℝ^n n big a^mathrmTpa 0 text for all a ℝ^nbackslash0\nbigr\n\nThe tangent space at T_pmathcal P(n) reads\n\n T_pmathcal P(n) =\n bigl\n X in mathbb R^nn big X=X^mathrmT\n bigr\n\ni.e. the set of symmetric matrices,\n\nConstructor\n\nSymmetricPositiveDefinite(n)\n\ngenerates the manifold mathcal P(n) subset ℝ^n n\n\n\n\n\n\n","category":"type"},{"location":"manifolds/symmetricpositivedefinite.html","page":"Symmetric positive definite","title":"Symmetric positive definite","text":"This manifold can – for example – be illustrated as ellipsoids: since the eigenvalues are all positive they can be taken as lengths of the axes of an ellipsoids while the directions are given by the eigenvectors.","category":"page"},{"location":"manifolds/symmetricpositivedefinite.html","page":"Symmetric positive definite","title":"Symmetric positive definite","text":"(Image: An example set of data)","category":"page"},{"location":"manifolds/symmetricpositivedefinite.html","page":"Symmetric positive definite","title":"Symmetric positive definite","text":"The manifold can be equipped with different metrics","category":"page"},{"location":"manifolds/symmetricpositivedefinite.html#Common-and-metric-independent-functions","page":"Symmetric positive definite","title":"Common and metric independent functions","text":"","category":"section"},{"location":"manifolds/symmetricpositivedefinite.html","page":"Symmetric positive definite","title":"Symmetric positive definite","text":"Modules = [Manifolds, ManifoldsBase]\nPages = [\"manifolds/SymmetricPositiveDefinite.jl\"]\nOrder = [:function]\nPublic=true\nPrivate=false\nFilter = t -> t !== mean","category":"page"},{"location":"manifolds/symmetricpositivedefinite.html#Base.convert-Tuple{Type{AbstractMatrix}, SPDPoint}","page":"Symmetric positive definite","title":"Base.convert","text":"convert(::Type{AbstractMatrix}, p::SPDPoint)\n\nreturn the point p as a matrix. The matrix is either stored within the SPDPoint or reconstructed from p.eigen.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#Base.rand-Tuple{SymmetricPositiveDefinite}","page":"Symmetric positive definite","title":"Base.rand","text":"rand(M::SymmetricPositiveDefinite; σ::Real=1)\n\nGenerate a random symmetric positive definite matrix on the SymmetricPositiveDefinite manifold M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.check_point-Union{Tuple{N}, Tuple{SymmetricPositiveDefinite{N}, Any}} where N","page":"Symmetric positive definite","title":"ManifoldsBase.check_point","text":"check_point(M::SymmetricPositiveDefinite, p; kwargs...)\n\nchecks, whether p is a valid point on the SymmetricPositiveDefinite M, i.e. is a matrix of size (N,N), symmetric and positive definite. The tolerance for the second to last test can be set using the kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.check_vector-Union{Tuple{N}, Tuple{SymmetricPositiveDefinite{N}, Any, Any}} where N","page":"Symmetric positive definite","title":"ManifoldsBase.check_vector","text":"check_vector(M::SymmetricPositiveDefinite, p, X; kwargs... )\n\nCheck whether X is a tangent vector to p on the SymmetricPositiveDefinite M, i.e. atfer check_point(M,p), X has to be of same dimension as p and a symmetric matrix, i.e. this stores tangent vetors as elements of the corresponding Lie group. The tolerance for the last test can be set using the kwargs....\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.injectivity_radius-Tuple{SymmetricPositiveDefinite}","page":"Symmetric positive definite","title":"ManifoldsBase.injectivity_radius","text":"injectivity_radius(M::SymmetricPositiveDefinite[, p])\ninjectivity_radius(M::MetricManifold{SymmetricPositiveDefinite,AffineInvariantMetric}[, p])\ninjectivity_radius(M::MetricManifold{SymmetricPositiveDefinite,LogCholeskyMetric}[, p])\n\nReturn the injectivity radius of the SymmetricPositiveDefinite. Since M is a Hadamard manifold with respect to the AffineInvariantMetric and the LogCholeskyMetric, the injectivity radius is globally .\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.is_flat-Tuple{SymmetricPositiveDefinite}","page":"Symmetric positive definite","title":"ManifoldsBase.is_flat","text":"is_flat(::SymmetricPositiveDefinite)\n\nReturn false. SymmetricPositiveDefinite is not a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.manifold_dimension-Union{Tuple{SymmetricPositiveDefinite{N}}, Tuple{N}} where N","page":"Symmetric positive definite","title":"ManifoldsBase.manifold_dimension","text":"manifold_dimension(M::SymmetricPositiveDefinite)\n\nreturns the dimension of SymmetricPositiveDefinite M=mathcal P(n) n ℕ, i.e.\n\ndim mathcal P(n) = fracn(n+1)2\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.project-Tuple{SymmetricPositiveDefinite, Any, Any}","page":"Symmetric positive definite","title":"ManifoldsBase.project","text":"project(M::SymmetricPositiveDefinite, p, X)\n\nproject a matrix from the embedding onto the tangent space T_pmathcal P(n) of the SymmetricPositiveDefinite matrices, i.e. the set of symmetric matrices.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.representation_size-Union{Tuple{SymmetricPositiveDefinite{N}}, Tuple{N}} where N","page":"Symmetric positive definite","title":"ManifoldsBase.representation_size","text":"representation_size(M::SymmetricPositiveDefinite)\n\nReturn the size of an array representing an element on the SymmetricPositiveDefinite manifold M, i.e. n n, the size of such a symmetric positive definite matrix on mathcal M = mathcal P(n).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.zero_vector-Tuple{SymmetricPositiveDefinite, Any}","page":"Symmetric positive definite","title":"ManifoldsBase.zero_vector","text":"zero_vector(M::SymmetricPositiveDefinite, p)\n\nreturns the zero tangent vector in the tangent space of the symmetric positive definite matrix p on the SymmetricPositiveDefinite manifold M.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#Default-metric:-the-affine-invariant-metric","page":"Symmetric positive definite","title":"Default metric: the affine invariant metric","text":"","category":"section"},{"location":"manifolds/symmetricpositivedefinite.html","page":"Symmetric positive definite","title":"Symmetric positive definite","text":"Modules = [Manifolds]\nPages = [\"manifolds/SymmetricPositiveDefiniteAffineInvariant.jl\"]\nOrder = [:type]","category":"page"},{"location":"manifolds/symmetricpositivedefinite.html#Manifolds.AffineInvariantMetric","page":"Symmetric positive definite","title":"Manifolds.AffineInvariantMetric","text":"AffineInvariantMetric <: AbstractMetric\n\nThe linear affine metric is the metric for symmetric positive definite matrices, that employs matrix logarithms and exponentials, which yields a linear and affine metric.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/symmetricpositivedefinite.html","page":"Symmetric positive definite","title":"Symmetric positive definite","text":"This metric is also the default metric, i.e. any call of the following functions with P=SymmetricPositiveDefinite(3) will result in MetricManifold(P,AffineInvariantMetric())and hence yield the formulae described in this seciton.","category":"page"},{"location":"manifolds/symmetricpositivedefinite.html","page":"Symmetric positive definite","title":"Symmetric positive definite","text":"Modules = [Manifolds]\nPages = [\"manifolds/SymmetricPositiveDefiniteAffineInvariant.jl\"]\nOrder = [:function]","category":"page"},{"location":"manifolds/symmetricpositivedefinite.html#Base.exp-Tuple{SymmetricPositiveDefinite, Vararg{Any}}","page":"Symmetric positive definite","title":"Base.exp","text":"exp(M::SymmetricPositiveDefinite, p, X)\nexp(M::MetricManifold{SymmetricPositiveDefinite{N},AffineInvariantMetric}, p, X)\n\nCompute the exponential map from p with tangent vector X on the SymmetricPositiveDefinite M with its default MetricManifold having the AffineInvariantMetric. The formula reads\n\nexp_p X = p^frac12operatornameExp(p^-frac12 X p^-frac12)p^frac12\n\nwhere operatornameExp denotes to the matrix exponential.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#Base.log-Tuple{SymmetricPositiveDefinite, Vararg{Any}}","page":"Symmetric positive definite","title":"Base.log","text":"log(M::SymmetricPositiveDefinite, p, q)\nlog(M::MetricManifold{SymmetricPositiveDefinite,AffineInvariantMetric}, p, q)\n\nCompute the logarithmic map from p to q on the SymmetricPositiveDefinite as a MetricManifold with AffineInvariantMetric. The formula reads\n\nlog_p q =\np^frac12operatornameLog(p^-frac12qp^-frac12)p^frac12\n\nwhere operatornameLog denotes to the matrix logarithm.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldDiff.riemannian_Hessian-Tuple{SymmetricPositiveDefinite, Vararg{Any, 4}}","page":"Symmetric positive definite","title":"ManifoldDiff.riemannian_Hessian","text":"riemannian_Hessian(M::SymmetricPositiveDefinite, p, G, H, X)\n\nThe Riemannian Hessian can be computed as stated in Eq. (7.3) [Ngu23]. Let nabla f(p) denote the Euclidean gradient G, nabla^2 f(p)X the Euclidean Hessian H, and operatornamesym(X) = frac12bigl(X^mathrmT+Xbigr) the symmetrization operator. Then the formula reads\n\n operatornameHessf(p)X\n =\n poperatornamesym(^2 f(p)X)p\n + operatornamesymbigl( Xoperatornamesymbigl( f(p)bigr)p)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#Manifolds.manifold_volume-Tuple{SymmetricPositiveDefinite}","page":"Symmetric positive definite","title":"Manifolds.manifold_volume","text":"manifold_volume(::SymmetricPositiveDefinite)\n\nReturn volume of the SymmetricPositiveDefinite manifold, i.e. infinity.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#Manifolds.volume_density-Union{Tuple{n}, Tuple{SymmetricPositiveDefinite{n}, Any, Any}} where n","page":"Symmetric positive definite","title":"Manifolds.volume_density","text":"volume_density(::SymmetricPositiveDefinite{n}, p, X) where {n}\n\nCompute the volume density of the SymmetricPositiveDefinite manifold at p in direction X. See [CKA17], Section 6.2 for details. Note that metric in Manifolds.jl has a different scaling factor than the reference.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.change_metric-Tuple{SymmetricPositiveDefinite, EuclideanMetric, Any, Any}","page":"Symmetric positive definite","title":"ManifoldsBase.change_metric","text":"change_metric(M::SymmetricPositiveDefinite{n}, E::EuclideanMetric, p, X)\n\nGiven a tangent vector X T_pmathcal P(n) with respect to the EuclideanMetric g_E, this function changes into the AffineInvariantMetric (default) metric on the SymmetricPositiveDefinite M.\n\nTo be precise we are looking for ccolon T_pmathcal P(n) to T_pmathcal P(n) such that for all YZ T_pmathcal P(n)` it holds\n\nYZ = operatornametr(YZ) = operatornametr(p^-1c(Y)p^-1c(Z)) = g_p(c(Z)c(Y))\n\nand hence c(X) = pX is computed.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.change_representer-Tuple{SymmetricPositiveDefinite, EuclideanMetric, Any, Any}","page":"Symmetric positive definite","title":"ManifoldsBase.change_representer","text":"change_representer(M::SymmetricPositiveDefinite, E::EuclideanMetric, p, X)\n\nGiven a tangent vector X T_pmathcal M representing a linear function on the tangent space at p with respect to the EuclideanMetric g_E, this is turned into the representer with respect to the (default) metric, the AffineInvariantMetric on the SymmetricPositiveDefinite M.\n\nTo be precise we are looking for ZT_pmathcal P(n) such that for all YT_pmathcal P(n)` it holds\n\nXY = operatornametr(XY) = operatornametr(p^-1Zp^-1Y) = g_p(ZY)\n\nand hence Z = pXp.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.distance-Union{Tuple{N}, Tuple{SymmetricPositiveDefinite{N}, Any, Any}} where N","page":"Symmetric positive definite","title":"ManifoldsBase.distance","text":"distance(M::SymmetricPositiveDefinite, p, q)\ndistance(M::MetricManifold{SymmetricPositiveDefinite,AffineInvariantMetric}, p, q)\n\nCompute the distance on the SymmetricPositiveDefinite manifold between p and q, as a MetricManifold with AffineInvariantMetric. The formula reads\n\nd_mathcal P(n)(pq)\n= lVert operatornameLog(p^-frac12qp^-frac12)rVert_mathrmF\n\nwhere operatornameLog denotes the matrix logarithm and lVertcdotrVert_mathrmF denotes the matrix Frobenius norm.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.get_basis-Tuple{SymmetricPositiveDefinite, Any, DefaultOrthonormalBasis}","page":"Symmetric positive definite","title":"ManifoldsBase.get_basis","text":"[Ξ,κ] = get_basis(M::SymmetricPositiveDefinite, p, B::DefaultOrthonormalBasis)\n[Ξ,κ] = get_basis(M::MetricManifold{SymmetricPositiveDefinite{N},AffineInvariantMetric}, p, B::DefaultOrthonormalBasis)\n\nReturn a default ONB for the tangent space T_pmathcal P(n) of the SymmetricPositiveDefinite with respect to the AffineInvariantMetric.\n\n g_p(XY) = operatornametr(p^-1 X p^-1 Y)\n\nThe basis constructed here is based on the ONB for symmetric matrices constructed as follows. Let\n\nDelta_ij = (a_kl)_kl=1^n quad text with \na_kl =\nbegincases\n 1 mbox for k=l text if i=j\n frac1sqrt2 mbox for k=i l=j text or k=j l=i\n 0 text else\nendcases\n\nwhich forms an ONB for the space of symmetric matrices.\n\nWe then form the ONB by\n\n Xi_ij = p^frac12Delta_ijp^frac12qquad i=1ldotsn j=ildotsn\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.get_basis_diagonalizing-Union{Tuple{N}, Tuple{SymmetricPositiveDefinite{N}, Any, DiagonalizingOrthonormalBasis}} where N","page":"Symmetric positive definite","title":"ManifoldsBase.get_basis_diagonalizing","text":"[Ξ,κ] = get_basis_diagonalizing(M::SymmetricPositiveDefinite, p, B::DiagonalizingOrthonormalBasis)\n[Ξ,κ] = get_basis_diagonalizing(M::MetricManifold{SymmetricPositiveDefinite{N},AffineInvariantMetric}, p, B::DiagonalizingOrthonormalBasis)\n\nReturn a orthonormal basis Ξ as a vector of tangent vectors (of length manifold_dimension of M) in the tangent space of p on the MetricManifold of SymmetricPositiveDefinite manifold M with AffineInvariantMetric that diagonalizes the curvature tensor R(uv)w with eigenvalues κ and where the direction B.frame_direction V has curvature 0.\n\nThe construction is based on an ONB for the symmetric matrices similar to get_basis(::SymmetricPositiveDefinite, p, ::DefaultOrthonormalBasis just that the ONB here is build from the eigen vectors of p^frac12Vp^frac12.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.get_coordinates-Tuple{SymmetricPositiveDefinite, Any, Any, Any, DefaultOrthonormalBasis}","page":"Symmetric positive definite","title":"ManifoldsBase.get_coordinates","text":"get_coordinates(::SymmetricPositiveDefinite, p, X, ::DefaultOrthonormalBasis)\n\nUsing the basis from get_basis the coordinates with respect to this ONB can be simplified to\n\n c_k = mathrmtr(p^-frac12Delta_ij X)\n\nwhere k is trhe linearized index of the i=1ldotsn j=ildotsn.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.get_vector-Tuple{SymmetricPositiveDefinite, Any, Any, Any, DefaultOrthonormalBasis}","page":"Symmetric positive definite","title":"ManifoldsBase.get_vector","text":"get_vector(::SymmetricPositiveDefinite, p, c, ::DefaultOrthonormalBasis)\n\nUsing the basis from get_basis the vector reconstruction with respect to this ONB can be simplified to\n\n X = p^frac12 Biggl( sum_i=1j=i^n c_k Delta_ij Biggr) p^frac12\n\nwhere k is the linearized index of the i=1ldotsn j=ildotsn.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.inner-Tuple{SymmetricPositiveDefinite, Any, Any, Any}","page":"Symmetric positive definite","title":"ManifoldsBase.inner","text":"inner(M::SymmetricPositiveDefinite, p, X, Y)\ninner(M::MetricManifold{SymmetricPositiveDefinite,AffineInvariantMetric}, p, X, Y)\n\nCompute the inner product of X, Y in the tangent space of p on the SymmetricPositiveDefinite manifold M, as a MetricManifold with AffineInvariantMetric. The formula reads\n\ng_p(XY) = operatornametr(p^-1 X p^-1 Y)\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.is_flat-Tuple{MetricManifold{ℝ, <:SymmetricPositiveDefinite, AffineInvariantMetric}}","page":"Symmetric positive definite","title":"ManifoldsBase.is_flat","text":"is_flat(::MetricManifold{ℝ,<:SymmetricPositiveDefinite,AffineInvariantMetric})\n\nReturn false. SymmetricPositiveDefinite with AffineInvariantMetric is not a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.parallel_transport_to-Tuple{SymmetricPositiveDefinite, Any, Any, Any}","page":"Symmetric positive definite","title":"ManifoldsBase.parallel_transport_to","text":"parallel_transport_to(M::SymmetricPositiveDefinite, p, X, q)\nparallel_transport_to(M::MetricManifold{SymmetricPositiveDefinite,AffineInvariantMetric}, p, X, y)\n\nCompute the parallel transport of X from the tangent space at p to the tangent space at q on the SymmetricPositiveDefinite as a MetricManifold with the AffineInvariantMetric. The formula reads\n\nmathcal P_qpX = p^frac12\noperatornameExpbigl(\nfrac12p^-frac12log_p(q)p^-frac12\nbigr)\np^-frac12X p^-frac12\noperatornameExpbigl(\nfrac12p^-frac12log_p(q)p^-frac12\nbigr)\np^frac12\n\nwhere operatornameExp denotes the matrix exponential and log the logarithmic map on SymmetricPositiveDefinite (again with respect to the AffineInvariantMetric).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.riemann_tensor-Tuple{SymmetricPositiveDefinite, Vararg{Any, 4}}","page":"Symmetric positive definite","title":"ManifoldsBase.riemann_tensor","text":"riemann_tensor(::SymmetricPositiveDefinite, p, X, Y, Z)\n\nCompute the value of Riemann tensor on the SymmetricPositiveDefinite manifold. The formula reads [Ren11] R(XY)Z=p^12R(X_I Y_I)Z_Ip^12, where R_I(X_I Y_I)Z_I=frac14Z_I X_I Y_I, X_I=p^-12Xp^-12, Y_I=p^-12Yp^-12 and Z_I=p^-12Zp^-12.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#BuresWassersteinMetricSection","page":"Symmetric positive definite","title":"Bures-Wasserstein metric","text":"","category":"section"},{"location":"manifolds/symmetricpositivedefinite.html","page":"Symmetric positive definite","title":"Symmetric positive definite","text":"Modules = [Manifolds]\nPages = [\"manifolds/SymmetricPositiveDefiniteBuresWasserstein.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/symmetricpositivedefinite.html#Manifolds.BuresWassersteinMetric","page":"Symmetric positive definite","title":"Manifolds.BuresWassersteinMetric","text":"BurresWassertseinMetric <: AbstractMetric\n\nThe Bures Wasserstein metric for symmetric positive definite matrices [MMP18]\n\n\n\n\n\n","category":"type"},{"location":"manifolds/symmetricpositivedefinite.html#Base.exp-Tuple{MetricManifold{ℝ, SymmetricPositiveDefinite, BuresWassersteinMetric}, Any, Any}","page":"Symmetric positive definite","title":"Base.exp","text":"exp(::MatricManifold{ℝ,SymmetricPositiveDefinite,BuresWassersteinMetric}, p, X)\n\nCompute the exponential map on SymmetricPositiveDefinite with respect to the BuresWassersteinMetric given by\n\n exp_p(X) = p+X+L_p(X)pL_p(X)\n\nwhere q=L_p(X) denotes the Lyapunov operator, i.e. it solves pq + qp = X.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#Base.log-Tuple{MetricManifold{ℝ, SymmetricPositiveDefinite, BuresWassersteinMetric}, Any, Any}","page":"Symmetric positive definite","title":"Base.log","text":"log(::MatricManifold{SymmetricPositiveDefinite,BuresWassersteinMetric}, p, q)\n\nCompute the logarithmic map on SymmetricPositiveDefinite with respect to the BuresWassersteinMetric given by\n\n log_p(q) = (pq)^frac12 + (qp)^frac12 - 2 p\n\nwhere q=L_p(X) denotes the Lyapunov operator, i.e. it solves pq + qp = X.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.change_representer-Tuple{MetricManifold{ℝ, SymmetricPositiveDefinite, BuresWassersteinMetric}, EuclideanMetric, Any, Any}","page":"Symmetric positive definite","title":"ManifoldsBase.change_representer","text":"change_representer(M::MetricManifold{ℝ,SymmetricPositiveDefinite,BuresWassersteinMetric}, E::EuclideanMetric, p, X)\n\nGiven a tangent vector X T_pmathcal M representing a linear function on the tangent space at p with respect to the EuclideanMetric g_E, this is turned into the representer with respect to the (default) metric, the BuresWassersteinMetric on the SymmetricPositiveDefinite M.\n\nTo be precise we are looking for ZT_pmathcal P(n) such that for all YT_pmathcal P(n)` it holds\n\nXY = operatornametr(XY) = ZY_mathrmBW\n\nfor all Y and hence we get Z= 2(A+A^{\\mathrm{T}})withA=Xp``.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.distance-Tuple{MetricManifold{ℝ, <:SymmetricPositiveDefinite, BuresWassersteinMetric}, Any, Any}","page":"Symmetric positive definite","title":"ManifoldsBase.distance","text":"distance(::MatricManifold{SymmetricPositiveDefinite,BuresWassersteinMetric}, p, q)\n\nCompute the distance with respect to the BuresWassersteinMetric on SymmetricPositiveDefinite matrices, i.e.\n\nd(pq) =\n operatornametr(p) + operatornametr(q) - 2operatornametrBigl( (p^frac12qp^frac12 bigr)^frac12 Bigr)\n\nwhere the last trace can be simplified (by rotating the matrix products in the trace) to operatornametr(pq).\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.inner-Tuple{MetricManifold{ℝ, <:SymmetricPositiveDefinite, BuresWassersteinMetric}, Any, Any, Any}","page":"Symmetric positive definite","title":"ManifoldsBase.inner","text":"inner(::MetricManifold{ℝ,SymmetricPositiveDefinite,BuresWassersteinMetric}, p, X, Y)\n\nCompute the inner product SymmetricPositiveDefinite with respect to the BuresWassersteinMetric given by\n\n XY = frac12operatornametr(L_p(X)Y)\n\nwhere q=L_p(X) denotes the Lyapunov operator, i.e. it solves pq + qp = X.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.is_flat-Tuple{MetricManifold{ℝ, <:SymmetricPositiveDefinite, BuresWassersteinMetric}}","page":"Symmetric positive definite","title":"ManifoldsBase.is_flat","text":"is_flat(::MetricManifold{ℝ,<:SymmetricPositiveDefinite,BuresWassersteinMetric})\n\nReturn false. SymmetricPositiveDefinite with BuresWassersteinMetric is not a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#Generalized-Bures-Wasserstein-metric","page":"Symmetric positive definite","title":"Generalized Bures-Wasserstein metric","text":"","category":"section"},{"location":"manifolds/symmetricpositivedefinite.html","page":"Symmetric positive definite","title":"Symmetric positive definite","text":"Modules = [Manifolds]\nPages = [\"manifolds/SymmetricPositiveDefiniteGeneralizedBuresWasserstein.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/symmetricpositivedefinite.html#Manifolds.GeneralizedBuresWassersteinMetric","page":"Symmetric positive definite","title":"Manifolds.GeneralizedBuresWassersteinMetric","text":"GeneralizedBurresWassertseinMetric{T<:AbstractMatrix} <: AbstractMetric\n\nThe generalized Bures Wasserstein metric for symmetric positive definite matrices, see [HMJG21].\n\nThis metric internally stores the symmetric positive definite matrix M to generalise the metric, where the name also follows the mentioned preprint.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/symmetricpositivedefinite.html#Base.exp-Tuple{MetricManifold{ℝ, SymmetricPositiveDefinite, GeneralizedBuresWassersteinMetric}, Any, Any}","page":"Symmetric positive definite","title":"Base.exp","text":"exp(::MatricManifold{ℝ,SymmetricPositiveDefinite,GeneralizedBuresWassersteinMetric}, p, X)\n\nCompute the exponential map on SymmetricPositiveDefinite with respect to the GeneralizedBuresWassersteinMetric given by\n\n exp_p(X) = p+X+mathcal ML_pM(X)pML_pM(X)\n\nwhere q=L_Mp(X) denotes the generalized Lyapunov operator, i.e. it solves pqM + Mqp = X.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#Base.log-Tuple{MetricManifold{ℝ, SymmetricPositiveDefinite, GeneralizedBuresWassersteinMetric}, Any, Any}","page":"Symmetric positive definite","title":"Base.log","text":"log(::MatricManifold{SymmetricPositiveDefinite,GeneralizedBuresWassersteinMetric}, p, q)\n\nCompute the logarithmic map on SymmetricPositiveDefinite with respect to the BuresWassersteinMetric given by\n\n log_p(q) = M(M^-1pM^-1q)^frac12 + (qM^-1pM^-1)^frac12M - 2 p\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.change_representer-Tuple{MetricManifold{ℝ, SymmetricPositiveDefinite, GeneralizedBuresWassersteinMetric}, EuclideanMetric, Any, Any}","page":"Symmetric positive definite","title":"ManifoldsBase.change_representer","text":"change_representer(M::MetricManifold{ℝ,SymmetricPositiveDefinite,GeneralizedBuresWassersteinMetric}, E::EuclideanMetric, p, X)\n\nGiven a tangent vector X T_pmathcal M representing a linear function on the tangent space at p with respect to the EuclideanMetric g_E, this is turned into the representer with respect to the (default) metric, the GeneralizedBuresWassersteinMetric on the SymmetricPositiveDefinite M.\n\nTo be precise we are looking for ZT_pmathcal P(n) such that for all YT_pmathcal P(n) it holds\n\nXY = operatornametr(XY) = ZY_mathrmBW\n\nfor all Y and hence we get Z = 2pXM + 2MXp.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.distance-Tuple{MetricManifold{ℝ, <:SymmetricPositiveDefinite, <:GeneralizedBuresWassersteinMetric}, Any, Any}","page":"Symmetric positive definite","title":"ManifoldsBase.distance","text":"distance(::MatricManifold{SymmetricPositiveDefinite,GeneralizedBuresWassersteinMetric}, p, q)\n\nCompute the distance with respect to the BuresWassersteinMetric on SymmetricPositiveDefinite matrices, i.e.\n\nd(pq) = operatornametr(M^-1p) + operatornametr(M^-1q)\n - 2operatornametrbigl( (p^frac12M^-1qM^-1p^frac12 bigr)^frac12\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.inner-Tuple{MetricManifold{ℝ, <:SymmetricPositiveDefinite, <:GeneralizedBuresWassersteinMetric}, Any, Any, Any}","page":"Symmetric positive definite","title":"ManifoldsBase.inner","text":"inner(::MetricManifold{ℝ,SymmetricPositiveDefinite,GeneralizedBuresWassersteinMetric}, p, X, Y)\n\nCompute the inner product SymmetricPositiveDefinite with respect to the GeneralizedBuresWassersteinMetric given by\n\n XY = frac12operatornametr(L_pM(X)Y)\n\nwhere q=L_Mp(X) denotes the generalized Lyapunov operator, i.e. it solves pqM + Mqp = X.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.is_flat-Tuple{MetricManifold{ℝ, <:SymmetricPositiveDefinite, <:GeneralizedBuresWassersteinMetric}}","page":"Symmetric positive definite","title":"ManifoldsBase.is_flat","text":"is_flat(::MetricManifold{ℝ,<:SymmetricPositiveDefinite,<:GeneralizedBuresWassersteinMetric})\n\nReturn false. SymmetricPositiveDefinite with GeneralizedBuresWassersteinMetric is not a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#Log-Euclidean-metric","page":"Symmetric positive definite","title":"Log-Euclidean metric","text":"","category":"section"},{"location":"manifolds/symmetricpositivedefinite.html","page":"Symmetric positive definite","title":"Symmetric positive definite","text":"Modules = [Manifolds]\nPages = [\"manifolds/SymmetricPositiveDefiniteLogEuclidean.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/symmetricpositivedefinite.html#Manifolds.LogEuclideanMetric","page":"Symmetric positive definite","title":"Manifolds.LogEuclideanMetric","text":"LogEuclideanMetric <: RiemannianMetric\n\nThe LogEuclidean Metric consists of the Euclidean metric applied to all elements after mapping them into the Lie Algebra, i.e. performing a matrix logarithm beforehand.\n\n\n\n\n\n","category":"type"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.distance-Union{Tuple{N}, Tuple{MetricManifold{ℝ, SymmetricPositiveDefinite{N}, LogEuclideanMetric}, Any, Any}} where N","page":"Symmetric positive definite","title":"ManifoldsBase.distance","text":"distance(M::MetricManifold{SymmetricPositiveDefinite{N},LogEuclideanMetric}, p, q)\n\nCompute the distance on the SymmetricPositiveDefinite manifold between p and q as a MetricManifold with LogEuclideanMetric. The formula reads\n\n d_mathcal P(n)(pq) = lVert operatornameLog p - operatornameLog q rVert_mathrmF\n\nwhere operatornameLog denotes the matrix logarithm and lVertcdotrVert_mathrmF denotes the matrix Frobenius norm.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.is_flat-Tuple{MetricManifold{ℝ, <:SymmetricPositiveDefinite, LogEuclideanMetric}}","page":"Symmetric positive definite","title":"ManifoldsBase.is_flat","text":"is_flat(::MetricManifold{ℝ,<:SymmetricPositiveDefinite,LogEuclideanMetric})\n\nReturn false. SymmetricPositiveDefinite with LogEuclideanMetric is not a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#Log-Cholesky-metric","page":"Symmetric positive definite","title":"Log-Cholesky metric","text":"","category":"section"},{"location":"manifolds/symmetricpositivedefinite.html","page":"Symmetric positive definite","title":"Symmetric positive definite","text":"Modules = [Manifolds]\nPages = [\"manifolds/SymmetricPositiveDefiniteLogCholesky.jl\"]\nOrder = [:type, :function]","category":"page"},{"location":"manifolds/symmetricpositivedefinite.html#Manifolds.LogCholeskyMetric","page":"Symmetric positive definite","title":"Manifolds.LogCholeskyMetric","text":"LogCholeskyMetric <: RiemannianMetric\n\nThe Log-Cholesky metric imposes a metric based on the Cholesky decomposition as introduced by [Lin19].\n\n\n\n\n\n","category":"type"},{"location":"manifolds/symmetricpositivedefinite.html#Base.exp-Tuple{MetricManifold{ℝ, SymmetricPositiveDefinite, LogCholeskyMetric}, Vararg{Any}}","page":"Symmetric positive definite","title":"Base.exp","text":"exp(M::MetricManifold{SymmetricPositiveDefinite,LogCholeskyMetric}, p, X)\n\nCompute the exponential map on the SymmetricPositiveDefinite M with LogCholeskyMetric from p into direction X. The formula reads\n\nexp_p X = (exp_y W)(exp_y W)^mathrmT\n\nwhere exp_xW is the exponential map on CholeskySpace, y is the cholesky decomposition of p, W = y(y^-1Xy^-mathrmT)_frac12, and (cdot)_frac12 denotes the lower triangular matrix with the diagonal multiplied by frac12.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#Base.log-Tuple{MetricManifold{ℝ, SymmetricPositiveDefinite, LogCholeskyMetric}, Vararg{Any}}","page":"Symmetric positive definite","title":"Base.log","text":"log(M::MetricManifold{SymmetricPositiveDefinite,LogCholeskyMetric}, p, q)\n\nCompute the logarithmic map on SymmetricPositiveDefinite M with respect to the LogCholeskyMetric emanating from p to q. The formula can be adapted from the CholeskySpace as\n\nlog_p q = xW^mathrmT + Wx^mathrmT\n\nwhere x is the cholesky factor of p and W=log_x y for y the cholesky factor of q and the just mentioned logarithmic map is the one on CholeskySpace.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.distance-Union{Tuple{N}, Tuple{MetricManifold{ℝ, SymmetricPositiveDefinite{N}, LogCholeskyMetric}, Any, Any}} where N","page":"Symmetric positive definite","title":"ManifoldsBase.distance","text":"distance(M::MetricManifold{SymmetricPositiveDefinite,LogCholeskyMetric}, p, q)\n\nCompute the distance on the manifold of SymmetricPositiveDefinite nmatrices, i.e. between two symmetric positive definite matrices p and q with respect to the LogCholeskyMetric. The formula reads\n\nd_mathcal P(n)(pq) = sqrt\n lVert x - y rVert_mathrmF^2\n + lVert log(operatornamediag(x)) - log(operatornamediag(y))rVert_mathrmF^2 \n\nwhere x and y are the cholesky factors of p and q, respectively, cdot denbotes the strictly lower triangular matrix of its argument, and lVertcdotrVert_mathrmF the Frobenius norm.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.inner-Union{Tuple{N}, Tuple{MetricManifold{ℝ, SymmetricPositiveDefinite{N}, LogCholeskyMetric}, Any, Any, Any}} where N","page":"Symmetric positive definite","title":"ManifoldsBase.inner","text":"inner(M::MetricManifold{LogCholeskyMetric,ℝ,SymmetricPositiveDefinite}, p, X, Y)\n\nCompute the inner product of two matrices X, Y in the tangent space of p on the SymmetricPositiveDefinite manifold M, as a MetricManifold with LogCholeskyMetric. The formula reads\n\n g_p(XY) = a_z(X)a_z(Y)_z\n\nwhere cdotcdot_x denotes inner product on the CholeskySpace, z is the cholesky factor of p, a_z(W) = z (z^-1Wz^-mathrmT)_frac12, and (cdot)_frac12 denotes the lower triangular matrix with the diagonal multiplied by frac12\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.is_flat-Tuple{MetricManifold{ℝ, <:SymmetricPositiveDefinite, LogCholeskyMetric}}","page":"Symmetric positive definite","title":"ManifoldsBase.is_flat","text":"is_flat(::MetricManifold{ℝ,<:SymmetricPositiveDefinite,LogCholeskyMetric})\n\nReturn false. SymmetricPositiveDefinite with LogCholeskyMetric is not a flat manifold.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#ManifoldsBase.parallel_transport_to-Tuple{MetricManifold{ℝ, SymmetricPositiveDefinite, LogCholeskyMetric}, Any, Any, Any}","page":"Symmetric positive definite","title":"ManifoldsBase.parallel_transport_to","text":"vector_transport_to(\n M::MetricManifold{SymmetricPositiveDefinite,LogCholeskyMetric},\n p,\n X,\n q,\n ::ParallelTransport,\n)\n\nParallel transport the tangent vector X at p along the geodesic to q with respect to the SymmetricPositiveDefinite manifold M and LogCholeskyMetric. The parallel transport is based on the parallel transport on CholeskySpace: Let x and y denote the cholesky factors of p and q, respectively and W = x(x^-1Xx^-mathrmT)_frac12, where (cdot)_frac12 denotes the lower triangular matrix with the diagonal multiplied by frac12. With V the parallel transport on CholeskySpace from x to y. The formula hear reads\n\nmathcal P_qpX = yV^mathrmT + Vy^mathrmT\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#Statistics","page":"Symmetric positive definite","title":"Statistics","text":"","category":"section"},{"location":"manifolds/symmetricpositivedefinite.html","page":"Symmetric positive definite","title":"Symmetric positive definite","text":"Modules = [Manifolds]\nPages = [\"SymmetricPositiveDefinite.jl\"]\nOrder = [:function]\nFilter = t -> t === mean","category":"page"},{"location":"manifolds/symmetricpositivedefinite.html#Statistics.mean-Tuple{SymmetricPositiveDefinite, Any}","page":"Symmetric positive definite","title":"Statistics.mean","text":"mean(\n M::SymmetricPositiveDefinite,\n x::AbstractVector,\n [w::AbstractWeights,]\n method = GeodesicInterpolation();\n kwargs...,\n)\n\nCompute the Riemannian mean of x using GeodesicInterpolation.\n\n\n\n\n\n","category":"method"},{"location":"manifolds/symmetricpositivedefinite.html#Efficient-representation","page":"Symmetric positive definite","title":"Efficient representation","text":"","category":"section"},{"location":"manifolds/symmetricpositivedefinite.html","page":"Symmetric positive definite","title":"Symmetric positive definite","text":"When a point p is used in several occasions, it might be beneficial to store the eigenvalues and vectors of p and optionally its square root and the inverse of the square root. The SPDPoint can be used for exactly that.","category":"page"},{"location":"manifolds/symmetricpositivedefinite.html","page":"Symmetric positive definite","title":"Symmetric positive definite","text":"SPDPoint","category":"page"},{"location":"manifolds/symmetricpositivedefinite.html#Manifolds.SPDPoint","page":"Symmetric positive definite","title":"Manifolds.SPDPoint","text":"SPDPoint <: AbstractManifoldsPoint\n\nStore the result of eigen(p) of an SPD matrix and (optionally) p^12 and p^-12 to avoid their repeated computations.\n\nThis result only has the result of eigen as a mandatory storage, the other three can be stored. If they are not stored they are computed and returned (but then still not stored) when required.\n\nConstructor\n\nSPDPoint(p::AbstractMatrix; store_p=true, store_sqrt=true, store_sqrt_inv=true)\n\nCreate an SPD point using an symmetric positive defincite matrix p, where you can optionally store p, sqrt and sqrt_inv\n\n\n\n\n\n","category":"type"},{"location":"manifolds/symmetricpositivedefinite.html","page":"Symmetric positive definite","title":"Symmetric positive definite","text":"and there are three internal functions to be able to use SPDPoint interchangeably with the default representation as a matrix.","category":"page"},{"location":"manifolds/symmetricpositivedefinite.html","page":"Symmetric positive definite","title":"Symmetric positive definite","text":"Manifolds.spd_sqrt\nManifolds.spd_sqrt_inv\nManifolds.spd_sqrt_and_sqrt_inv","category":"page"},{"location":"manifolds/symmetricpositivedefinite.html#Manifolds.spd_sqrt","page":"Symmetric positive definite","title":"Manifolds.spd_sqrt","text":"spd_sqrt(p::AbstractMatrix)\nspd_sqrt(p::SPDPoint)\n\nreturn p^frac12 by either computing it (if it is missing or for the AbstractMatrix) or returning the stored value from within the SPDPoint.\n\nThis method assumes that p represents an spd matrix.\n\n\n\n\n\n","category":"function"},{"location":"manifolds/symmetricpositivedefinite.html#Manifolds.spd_sqrt_inv","page":"Symmetric positive definite","title":"Manifolds.spd_sqrt_inv","text":"spd_sqrt_inv(p::SPDPoint)\n\nreturn p^-frac12 by either computing it (if it is missing or for the AbstractMatrix) or returning the stored value from within the SPDPoint.\n\nThis method assumes that p represents an spd matrix.\n\n\n\n\n\n","category":"function"},{"location":"manifolds/symmetricpositivedefinite.html#Manifolds.spd_sqrt_and_sqrt_inv","page":"Symmetric positive definite","title":"Manifolds.spd_sqrt_and_sqrt_inv","text":"spd_sqrt_and_sqrt_inv(p::AbstractMatrix)\nspd_sqrt_and_sqrt_inv(p::SPDPoint)\n\nreturn p^frac12 and p^-frac12 by either computing them (if they are missing or for the AbstractMatrix) or returning their stored value from within the SPDPoint.\n\nCompared to calling single methods spd_sqrt and spd_sqrt_inv this method only computes the eigenvectors once for the case of the AbstractMatrix or if both are missing.\n\nThis method assumes that p represents an spd matrix.\n\n\n\n\n\n","category":"function"},{"location":"manifolds/symmetricpositivedefinite.html#Literature","page":"Symmetric positive definite","title":"Literature","text":"","category":"section"},{"location":"misc/contributing.html","page":"Contributing","title":"Contributing","text":"EditURL = \"https://github.com/JuliaManifolds/Manifolds.jl/blob/master/CONTRIBUTING.md\"","category":"page"},{"location":"misc/contributing.html#Contributing-to-Manifolds.jl","page":"Contributing","title":"Contributing to Manifolds.jl","text":"","category":"section"},{"location":"misc/contributing.html","page":"Contributing","title":"Contributing","text":"First, thanks for taking the time to contribute. Any contribution is appreciated and welcome.","category":"page"},{"location":"misc/contributing.html","page":"Contributing","title":"Contributing","text":"The following is a set of guidelines to Manifolds.jl.","category":"page"},{"location":"misc/contributing.html#Table-of-Contents","page":"Contributing","title":"Table of Contents","text":"","category":"section"},{"location":"misc/contributing.html","page":"Contributing","title":"Contributing","text":"Contributing to Manifolds.jl - Table of Contents\nI just have a question\nHow can I file an issue?\nHow can I contribute?\nAdd a missing method\nProvide a new manifold\nCode style","category":"page"},{"location":"misc/contributing.html#I-just-have-a-question","page":"Contributing","title":"I just have a question","text":"","category":"section"},{"location":"misc/contributing.html","page":"Contributing","title":"Contributing","text":"The developers can most easily be reached in the Julia Slack channel #manifolds. You can apply for the Julia Slack workspace here if you haven't joined yet. You can also ask your question on discourse.julialang.org.","category":"page"},{"location":"misc/contributing.html#How-can-I-file-an-issue?","page":"Contributing","title":"How can I file an issue?","text":"","category":"section"},{"location":"misc/contributing.html","page":"Contributing","title":"Contributing","text":"If you found a bug or want to propose a feature, we track our issues within the GitHub repository.","category":"page"},{"location":"misc/contributing.html#How-can-I-contribute?","page":"Contributing","title":"How can I contribute?","text":"","category":"section"},{"location":"misc/contributing.html#Add-a-missing-method","page":"Contributing","title":"Add a missing method","text":"","category":"section"},{"location":"misc/contributing.html","page":"Contributing","title":"Contributing","text":"Not all methods from our interface ManifoldsBase.jl have been implemented for every manifold. If you notice a method missing and can contribute an implementation, please do so! Even providing a single new method is a good contribution.","category":"page"},{"location":"misc/contributing.html#Provide-a-new-manifold","page":"Contributing","title":"Provide a new manifold","text":"","category":"section"},{"location":"misc/contributing.html","page":"Contributing","title":"Contributing","text":"A main contribution you can provide is another manifold that is not yet included in the package. A manifold is a concrete type of AbstractManifold from ManifoldsBase.jl. This package also provides the main set of functions a manifold can/should implement. Don't worry if you can only implement some of the functions. If the application you have in mind only requires a subset of these functions, implement those. The ManifoldsBase.jl interface provides concrete error messages for the remaining unimplemented functions.","category":"page"},{"location":"misc/contributing.html","page":"Contributing","title":"Contributing","text":"One important detail is that the interface usually provides an in-place as well as a non-mutating variant See for example exp! and exp. The non-mutating one (e.g. exp) always falls back to use the in-place one, so in most cases it should suffice to implement the in-place one (e.g. exp!).","category":"page"},{"location":"misc/contributing.html","page":"Contributing","title":"Contributing","text":"Note that since the first argument is always the AbstractManifold, the mutated argument is always the second one in the signature. In the example we have exp(M, p, X, t) for the exponential map and exp!(M, q, p, X, t) for the in-place one, which stores the result in q.","category":"page"},{"location":"misc/contributing.html","page":"Contributing","title":"Contributing","text":"On the other hand, the user will most likely look for the documentation of the non-mutating version, so we recommend adding the docstring for the non-mutating one, where all different signatures should be collected in one string when reasonable. This can best be achieved by adding a docstring to the method with a general signature with the first argument being your manifold:","category":"page"},{"location":"misc/contributing.html","page":"Contributing","title":"Contributing","text":"struct MyManifold <: AbstractManifold end\n\n@doc raw\"\"\"\n exp(M::MyManifold, p, X)\n\nDescribe the function.\n\"\"\"\nexp(::MyManifold, ::Any...)","category":"page"},{"location":"misc/contributing.html#Code-style","page":"Contributing","title":"Code style","text":"","category":"section"},{"location":"misc/contributing.html","page":"Contributing","title":"Contributing","text":"We try to follow the documentation guidelines from the Julia documentation as well as Blue Style. We run JuliaFormatter.jl on the repo in the way set in the .JuliaFormatter.toml file, which enforces a number of conventions consistent with the Blue Style.","category":"page"},{"location":"misc/contributing.html","page":"Contributing","title":"Contributing","text":"We also follow a few internal conventions:","category":"page"},{"location":"misc/contributing.html","page":"Contributing","title":"Contributing","text":"It is preferred that the AbstractManifold's struct contain a reference to the general theory.\nAny implemented function should be accompanied by its mathematical formulae if a closed form exists.\nWithin the source code of one manifold, the type of the manifold should be the first element of the file, and an alphabetical order of the functions is preferable.\nThe above implies that the in-place variant of a function follows the non-mutating variant.\nThere should be no dangling = signs.\nAlways add a newline between things of different types (struct/method/const).\nAlways add a newline between methods for different functions (including in-place/nonmutating variants).\nPrefer to have no newline between methods for the same function; when reasonable, merge the docstrings.\nAll import/using/include should be in the main module file.","category":"page"}] +} diff --git a/v0.8.79/siteinfo.js b/v0.8.79/siteinfo.js new file mode 100644 index 0000000000..d390e00117 --- /dev/null +++ b/v0.8.79/siteinfo.js @@ -0,0 +1 @@ +var DOCUMENTER_CURRENT_VERSION = "v0.8.79"; diff --git a/v0.8.79/tutorials/getstarted.html b/v0.8.79/tutorials/getstarted.html new file mode 100644 index 0000000000..43bc6f85c6 --- /dev/null +++ b/v0.8.79/tutorials/getstarted.html @@ -0,0 +1,66 @@ + +🚀 Get Started with Manifolds.jl · Manifolds.jl

    🚀 Get Started with Manifolds.jl

    This is a short overview of Manifolds.jl and how to get started working with your first Manifold. we first need to install the package, using for example

    using Pkg; Pkg.add("Manifolds")

    Then you can load the package with

    using Manifolds
    [ Info: Precompiling ManifoldsRecipesBaseExt [37da849e-34ab-54fd-a5a4-b22599bd6cb0]

    Using the Library of Manifolds

    Manifolds.jl is first of all a library of manifolds, see the list in the menu here under “basic manifolds”.

    Let’s look at three examples together with the first few functions on manifolds.

    1. The Euclidean space

    The Euclidean Space Euclidean brings us (back) into linear case of vectors, so in terms of manifolds, this is a very simple one. It is often useful to compare to classical algorithms, or implementations.

    M₁ = Euclidean(3)
    Euclidean(3; field = ℝ)

    Since a manifold is a type in Julia, we write it in CamelCase. Its parameters are first a dimension or size parameter of the manifold, sometimes optional is a field the manifold is defined over.

    For example the above definition is the same as the real-valued case

    M₁ === Euclidean(3, field=ℝ)
    true

    But we even introduced a short hand notation, since ℝ is also just a symbol/variable to use”

    M₁ === ℝ^3
    true

    And similarly here are two ways to create the manifold of vectors of length two with complex entries – or mathematically the space $\mathbb C^2$

    Euclidean(2, field=ℂ) === ℂ^2
    true

    The easiest to check is the dimension of a manifold. Here we have three “directions to walk into” at every point $p\in \mathbb R ^3$ so 🔗 manifold_dimension) is

    manifold_dimension(M₁)
    3

    2. The hyperpolic space

    The $d$-dimensional hyperbolic space is usually represented in $\mathbb R^{d+1}$ as the set of points $p\in\mathbb R^3$ fulfilling

    \[p_1^2+p_2^2+\cdots+p_d^2-p_{d+1}^2 = -1.\]

    We define the manifold using

    M₂ = Hyperbolic(2)
    Hyperbolic(2)

    And we can again just start with looking at the manifold dimension of M₂

    manifold_dimension(M₂)
    2

    A next useful function is to check, whether some $p∈\mathbb R^3$ is a point on the manifold M₂. We can check

    is_point(M₂, [0, 0, 1])
    true

    or

    is_point(M₂, [1, 0, 1])
    false

    Keyword arguments are passed on to any numerical checks, for example an absolute tolerance when checking the above equiality.

    But in an interactive session an error message might be helpful. A positional (third) argument is present to activate this. Setting this parameter to true, we obtain an error message that gives insight into why the point is not a point on M₂. Note that the LoadError: is due to quarto, on REPL you would just get the DomainError.

    is_point(M₂, [0, 0, 1.001], true)
    LoadError: DomainError with -1.0020009999999997:
    +The point [0.0, 0.0, 1.001] does not lie on Hyperbolic(2) since its Minkowski inner product is not -1.

    3. The sphere

    The sphere $\mathbb S^d$ is the $d$-dimensional sphere represented in its embedded form, that is unit vectors $p \in \mathbb R^{d+1}$ with unit norm $\lVert p \rVert_2 = 1$.

    M₃ = Sphere(2)
    Sphere(2, ℝ)

    If we only have a point that is approximately on the manifold, we can allow for a tolerance. Usually these are the same values of atol and rtol alowed in isapprox, i.e. we get

    is_point(M₃, [0, 0, 1.001]; atol=1e-3)
    true

    Here we can show a last nice check: 🔗 is_vector to check whether a tangent vector X is a representation of a tangent vector $X∈T_p\mathcal M$ to a point p on the manifold.

    This function has two positional asrguments, the first to again indicate whether to throw an error, the second to disable the check that p is a valid point on the manifold. Usually this validity is essential for the tangent check, but if it was for example performed before, it can be turned off to spare time.

    For example in our first example the point is not of unit norm

    is_vector(M₃, [2, 0, 0], [0, 1, 1])
    false

    But the orthogonality of p and X is still valid, we can disable the point check, but even setting the error to true we get here

    is_vector(M₃, [2, 0, 0], [0, 1, 1], true, false)
    true

    But of course it is better to use a valid point in the first place

    is_vector(M₃, [1, 0, 0], [0, 1, 1])
    true

    and for these we again get informative error messages

    @expect_error is_vector(M₃, [1, 0, 0], [0.1, 1, 1], true) DomainError
    LoadError: LoadError: UndefVarError: `@expect_error` not defined
    +in expression starting at In[19]:1

    To learn about how to define a manifold youself check out the 🔗 How to define your own manifold tutorial of 🔗 ManifoldsBase.jl.”

    Building more advanced manifolds

    Based on these basic manifolds we can directly build more advanced manifolds.

    The first one concerns vectors or matrices of data on a manifold, the PowerManifold.

    M₄ = M₂^2
    PowerManifold(Hyperbolic(2), 2)

    Then points are represented by arrays, where the power manifold dimension is added in the end. In other words – for the hyperbolic manifold here, we have a matrix with 2 columns, where each column is a valid point on hyperbolic space.

    p = [0 0; 0 1; 1 sqrt(2)]
    3×2 Matrix{Float64}:
    + 0.0  0.0
    + 0.0  1.0
    + 1.0  1.41421
    [is_point(M₂, p[:, 1]), is_point(M₂, p[:, 2])]
    2-element Vector{Bool}:
    + 1
    + 1

    But of course the method we used previously also works for power manifolds:

    is_point(M₄, p)
    true

    Note that nested power manifolds are combined into one as in

    M₄₂ = M₄^4
    PowerManifold(Hyperbolic(2), 2, 4)

    which represents $2\times 4$ – matrices of hyperbolic points represented in $3\times 2\times 4$ arrays.

    We can – alternatively – use a power manifold with nested arrays

    M₅ = PowerManifold(M₃, NestedPowerRepresentation(), 2)
    PowerManifold(Sphere(2, ℝ), NestedPowerRepresentation(), 2)

    which emphasizes that we have vectors of length 2 that contain points, so we store them that way.

    p₂ = [[0.0, 0.0, 1.0], [0.0, 1.0, 0.0]]
    2-element Vector{Vector{Float64}}:
    + [0.0, 0.0, 1.0]
    + [0.0, 1.0, 0.0]

    To unify both representations, elements of the power manifold can also be accessed in the classical indexing fashion, if we start with the corresponding manifold first. This way one can implement algorithms also independent of which representation is used.”

    p[M₄, 1]
    3-element Vector{Float64}:
    + 0.0
    + 0.0
    + 1.0
    p₂[M₅, 2]
    3-element Vector{Float64}:
    + 0.0
    + 1.0
    + 0.0

    Another construtor is the ProductManifold to combine different manifolds. Here of course the order matters. First we construct these using $×$

    M₆ = M₂ × M₃
    ProductManifold with 2 submanifolds:
    + Hyperbolic(2)
    + Sphere(2, ℝ)

    Since now the representations might differ from element to element, we have to encapsulate these in their own type.

    p₃ = Manifolds.ArrayPartition([0, 0, 1], [0, 1, 0])
    ([0, 0, 1], [0, 1, 0])

    Here ArrayPartition taken from 🔗 RecursiveArrayTools.jl to store the point on the product manifold efficiently in one array, still allowing efficient access to the product elements.

    is_point(M₆, p₃, true)
    true

    But accessing single components still works the same.”

    p₃[M₆, 1]
    3-element Vector{Int64}:
    + 0
    + 0
    + 1

    Finally, also the TangentBundle, the manifold collecting all tangent spaces on a manifold is available as”

    M₇ = TangentBundle(M₃)
    TangentBundle(Sphere(2, ℝ))

    Implementing generic Functions

    In this section we take a look how to implement generic functions on manifolds.

    For our example here, we want to implement the so-called 📖 Bézier curve using the so-called 📖 de-Casteljau algorithm. The linked algorithm can easily be generalised to manifolds by replacing lines with geodesics. This was for example used in [BG18] and the following example is an extended version of an example from [ABBR23].

    The algorithm works recursively. For the case that we have a Bézier curve with just two points, the algorithm just evaluates the geodesic connecting both at some time point $t∈[0,1]$. The function to evaluate a shortest geodesic (it might not be unique, but then a deterministic choice is taken) between two points p and q on a manifold M 🔗 shortest_geodesic(M, p, q, t).

    function de_Casteljau(M::AbstractManifold, t, pts::NTuple{2})
    +    return shortest_geodesic(M, pts[1], pts[2], t)
    +end
    de_Casteljau (generic function with 1 method)
    function de_Casteljau(M::AbstractManifold, t, pts::NTuple)
    +    p = de_Casteljau(M, t, pts[1:(end - 1)])
    +    q = de_Casteljau(M, t, pts[2:end])
    +    return shortest_geodesic(M, p, q, t)
    +end
    de_Casteljau (generic function with 2 methods)

    Which can now be used on any manifold where the shortest geodesic is implemented

    Now on several manifolds the 📖 exponential map and its (locally defined) inverse, the logarithmic map might not be available in an implementation. So one way to generalise this, is the use of a retraction (see [AMS08], Def. 4.1.1 for details) and its (local) inverse.

    The function itself is quite similar to the expponential map, just that 🔗 retract(M, p, X, m) has one further parameter, the type of retraction to take, so m is a subtype of AbstractRetractionMethod m, the same for the 🔗 inverse_retract(M, p, q, n) with an AbstractInverseRetractionMethod n.

    Thinking of a generic implementation, we would like to have a way to specify one, that is available. This can be done by using 🔗 default_retraction_method and 🔗 default_inverse_retraction_method, respectively. We implement

    function generic_de_Casteljau(
    +    M::AbstractManifold,
    +    t,
    +    pts::NTuple{2};
    +    m::AbstractRetractionMethod=default_retraction_method(M),
    +    n::AbstractInverseRetractionMethod=default_inverse_retraction_method(M),
    +)
    +    X = inverse_retract(M, pts[1], pts[2], n)
    +    return retract(M, pts[1], X, t, m)
    +end
    generic_de_Casteljau (generic function with 1 method)

    and for the recursion

    function generic_de_Casteljau(
    +    M::AbstractManifold,
    +    t,
    +    pts::NTuple;
    +    m::AbstractRetractionMethod=default_retraction_method(M),
    +    n::AbstractInverseRetractionMethod=default_inverse_retraction_method(M),
    +)
    +    p = generic_de_Casteljau(M, t, pts[1:(end - 1)]; m=m, n=n)
    +    q = generic_de_Casteljau(M, t, pts[2:end]; m=m, n=n)
    +    X = inverse_retract(M, p, q, n)
    +    return retract(M, p, X, t, m)
    +end
    generic_de_Casteljau (generic function with 2 methods)

    Note that on a manifold M where the exponential map is implemented, the default_retraction_method(M) returns 🔗 ExponentialRetraction, which yields that the retract function falls back to calling exp.

    The same mechanism exists for 🔗 parallel_transport_to(M, p, X, q) and the more general 🔗 vector_transport_to(M, p, X, q, m) whose 🔗 AbstractVectorTransportMethod m has a default defined by 🔗 default_vector_transport_method(M).

    Allocating and in-place computations

    Memory allocation is a 🔗 critical performace issue when programming in Julia. To take this into account, Manifolds.jl provides special functions to reduce the amount of allocations.

    We again look at the 📖 exponential map. On a manifold M the exponential map needs a point p (to start from) and a tangent vector X, which can be seen as direction to “walk into” as well as the length to walk into this direction. In Manifolds.jl the function can then be called with q = exp(M, p, X) (see 🔗 exp(M, p, X)). This function returns the resulting point q, which requires to allocate new memory.

    To avoid this allocation, the function 🔗 exp!(M, q, p, X) can be called. Here q is allocated beforehand and is passed as the memory, where the result is returned in. It might be used even for interims computations, as long as it does not introduce side effects. Thas means that even with exp!(M, p, p, X) the result is correct.

    Let’s look at an example.

    We take another look at the Sphere, but now a high-dimensional one. We can also illustrate how to generate radnom points and tangent vectors.

    M = Sphere(10000)
    +p₄ = rand(M)
    +X = rand(M; vector_at=p₄)

    Looking at the allocations required we get

    @allocated exp(M, p₄, X)
    9928999

    While if we have already allocated memory for the resulting point on the manifold, for example

    q₂ = zero(p₄);

    There are no new memory allocations necessary if we use the in-place function.”

    @allocated exp!(M, q₂, p₄, X)
    0

    This methodology is used for all functions that compute a new point or tangent vector. By default all allocating functions allocate memory and call the in-place function. This also means that if you implement a new manifold, you just have to implement the in-place version.

    Decorating a manifold

    As you saw until now, an 🔗 AbstractManifold describes a Riemannian manifold. For completeness, this also includes the chosen 📖 Riemannian metric tensor or inner product on the tangent spaces.

    In Manifolds.jl these are assumed to be a “reasonable default”. For example on the Sphere(n) we used above, the default metric is the one inherited from restricting the inner product from the embedding space onto each tangent space.

    Consider a manifold like

    M₈ = SymmetricPositiveDefinite(3)
    SymmetricPositiveDefinite(3)

    which is the manifold of $3×3$ matrices that are symmetric and positive definite. which has a default as well, the affine invariant AffineInvariantMetric, but also has several different metrics.

    To switch the metric, we use the idea of a 📖 decorator pattern approach. Defining

    M₈₂ = MetricManifold(M₈, BuresWassersteinMetric())
    MetricManifold(SymmetricPositiveDefinite(3), BuresWassersteinMetric())

    changes the manifold to use the BuresWassersteinMetric.

    This changes all functions that depend on the metric, most prominently the Riemannian matric, but also the exponential and logarithmic map and hence also geodesics.

    All functions that are not dependent on a metric – for example the manifold dimension, the tests of points and vectors we already looked at, but also all retractions – stay unchanged. This means that for example

    [manifold_dimension(M₈₂), manifold_dimension(M₈)]
    2-element Vector{Int64}:
    + 6
    + 6

    both calls the same underlying function. On the other hand with

    p₅, X₅ = one(zeros(3, 3)), [1.0 0.0 1.0; 0.0 1.0 0.0; 1.0 0.0 1.0]
    ([1.0 0.0 0.0; 0.0 1.0 0.0; 0.0 0.0 1.0], [1.0 0.0 1.0; 0.0 1.0 0.0; 1.0 0.0 1.0])

    but for example the exponential map and the norm yield different results

    [exp(M₈, p₅, X₅), exp(M₈₂, p₅, X₅)]
    2-element Vector{Matrix{Float64}}:
    + [4.194528049465325 0.0 3.194528049465325; 0.0 2.718281828459045 0.0; 3.194528049465325 0.0 4.194528049465328]
    + [2.5 0.0 1.5; 0.0 2.25 0.0; 1.5 0.0 2.5]
    [norm(M₈, p₅, X₅), norm(M₈₂, p₅, X₅)]
    2-element Vector{Float64}:
    + 2.23606797749979
    + 1.118033988749895

    Technically this done using Traits – the trait here is the IsMetricManifold trait. Our trait system allows to combine traits but also to inherit properties in a hierarchical way, see 🔗 here for the technical details.

    The same approach is used for

    Again, for all of these, the concrete types only have to be used if you want to do a second, different from the details, property, for example a second way to embed a manfiold. If a manifold is (in its usual representation) an embedded manifold, this works with the default manifold type already, since then it is again set as the reasonable default.

    Literature

    [AMS08]
    +
    +
    P.-A. Absil, R. Mahony and R. Sepulchre. Optimization Algorithms on Matrix Manifolds. Princeton University Press (2008), available online at [press.princeton.edu/chapters/absil/](http://press.princeton.edu/chapters/absil/).
    +
    [ABBR23]
    +
    +
    S. D. Axen, M. Baran, R. Bergmann and K. Rzecki. Manifolds.jl: An Extensible Julia Framework for Data Analysis on Manifolds. AMS Transactions on Mathematical Software (2023), arXiv:2021.08777, accepted for publication.
    +
    [BG18]
    +
    +
    R. Bergmann and P.-Y. Gousenbourger. A variational model for data fitting on manifolds by minimizing the acceleration of a Bézier curve. Frontiers in Applied Mathematics and Statistics 4 (2018), arXiv:1807.10090.
    +
    +
    diff --git a/v0.8.79/tutorials/hand-gestures.html b/v0.8.79/tutorials/hand-gestures.html new file mode 100644 index 0000000000..12c5e76170 --- /dev/null +++ b/v0.8.79/tutorials/hand-gestures.html @@ -0,0 +1,103 @@ + +perform Hand gesture analysis · Manifolds.jl

    Hand gesture analysis

    In this tutorial we will learn how to use Kendall’s shape space to analyze hand gesture data.

    Let’s start by loading libraries required for our work.

    using Manifolds, CSV, DataFrames, Plots, MultivariateStats

    Our first function loads dataset of hand gestures, described here.

    function load_hands()
    +    hands_url = "https://raw.githubusercontent.com/geomstats/geomstats/master/geomstats/datasets/data/hands/hands.txt"
    +    hand_labels_url = "https://raw.githubusercontent.com/geomstats/geomstats/master/geomstats/datasets/data/hands/labels.txt"
    +
    +    hands = Matrix(CSV.read(download(hands_url), DataFrame, header=false))
    +    hands = reshape(hands, size(hands, 1), 3, 22)
    +    hand_labels = CSV.read(download(hand_labels_url), DataFrame, header=false).Column1
    +    return hands, hand_labels
    +end
    load_hands (generic function with 1 method)

    The following code plots a sample gesture as a 3D scatter plot of points.

    hands, hand_labels = load_hands()
    +scatter3d(hands[1, 1, :], hands[1, 2, :], hands[1, 3, :])

    Each gesture is represented by 22 landmarks in $ℝ³$, so we use the appropriate Kendall’s shape space

    Mshape = KendallsShapeSpace(3, 22)
    KendallsShapeSpace{3, 22}()

    Hands read from the dataset are projected to the shape space to remove translation and scaling variability. Rotational variability is then handled using the quotient structure of KendallsShapeSpace

    hands_projected = [project(Mshape, hands[i, :, :]) for i in axes(hands, 1)]

    In the next part let’s do tangent space PCA. This starts with computing a mean point and computing logithmic maps at mean to each point in the dataset.

    mean_hand = mean(Mshape, hands_projected)
    +hand_logs = [log(Mshape, mean_hand, p) for p in hands_projected]

    For a tangent PCA, we need coordinates in a basis. Some libraries skip this step because the representation of tangent vectors forms a linear subspace of an Euclidean space so PCA automatically detects which directions have no variance but this is a more generic way to solve this issue.

    B = get_basis(Mshape, mean_hand, ProjectedOrthonormalBasis(:svd))
    +hand_log_coordinates = [get_coordinates(Mshape, mean_hand, X, B) for X in hand_logs]

    This code prepares data for MultivariateStats – mean=0 is set because we’ve centered the data geometrically to mean_hand in the code above.

    red_coords = reduce(hcat, hand_log_coordinates)
    +fp = fit(PCA, red_coords; mean=0)
    PCA(indim = 59, outdim = 18, principalratio = 0.9900213563800988)
    +
    +Pattern matrix (unstandardized loadings):
    +─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
    +            PC1           PC2           PC3           PC4           PC5           PC6           PC7           PC8           PC9          PC10          PC11          PC12          PC13          PC14          PC15          PC16          PC17          PC18
    +─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
    +1   -0.0290105    0.0208927    -0.01643       0.00190549    0.00901145    0.000643771  -0.00363047   -0.00217327    0.00312554   -0.00356053    0.00478045    0.00165704    0.00218866    0.0037857     0.000320345  -0.00145212    0.000948335  -0.00184176
    +2    0.0172527    0.0165863    -0.0168821    -0.0183233     0.0121555     0.00833736    0.00187667   -0.000648234   0.00706323    0.00583622   -0.0044018     0.0012355     0.00118376   -0.00246016    0.00446684   -0.00498993   -0.0028049    -0.00259758
    +3    0.0447499   -0.00487667   -0.00247071   -0.00148697   -0.00200127   -0.00795338    0.00905314    0.00687454    0.0114088    -0.000998774   0.00459101    0.00645948    0.00073043    0.00591995   -0.00520394    0.00129428   -0.000463386  -0.00207384
    +4   -0.00881422  -0.0341713     0.00749624    0.00795209   -0.00260601    0.00356386    0.00204456   -0.00905276    0.00826807    0.00012095    0.000768538  -0.000460691   0.00411022   -0.00216294   -0.000650028   0.00251224    0.00149784   -0.00181133
    +5    0.0325794   -0.023796      0.000642765   0.00509869    0.00759807    0.00483368   -0.00252952    0.00656179    0.00322274   -0.000313146   0.00143493   -0.000676479   0.000146354  -0.00266203    0.00353957    0.0021415    -0.00457168    0.00282965
    +6   -0.00617763   6.91201e-5    0.00765638    0.00183758    0.00157382    0.00184956   -0.00797935    0.000700457   0.0087012     0.00992564    0.00263642    0.00294279   -0.0092        0.00133877    0.00145735   -0.0014816     0.00235123   -0.00039541
    +7   -0.0183122    0.0131045     0.0125222    -0.00638021   -0.006709     -0.00013628    0.00858169   -0.00159031   -0.00585433   -0.0032447     0.00880912   -0.00149308    0.000724205   0.00469925    0.00432005    0.0012382    -0.00251638    6.89878e-5
    +8    0.0392874   -0.0152552    -0.00404674   -0.0183856    -0.0054739     0.000203488   0.00687526    0.00989129   -0.00570517    0.00234255   -0.00221344   -0.00514796    0.000658069   0.00220789    7.02581e-5    0.000380265   0.0007751     0.00234631
    +9   -0.00525049  -0.0181427    -0.00473895   -0.0128126     0.000405834  -0.00936332   -0.000781745   0.011196     -0.00498502    0.00199077    0.00355555   -0.00334398    0.00763648    0.000311697  -0.000844841  -0.00526438   -0.00201977    0.00188678
    +10   0.0771681    0.0248294    -0.00375548   -0.0138712    -0.0126479    -0.00543573   -0.0136609    -0.00408721   -0.00445726   -0.00407287    0.00696664   -0.00158737   -0.00201909   -0.00211184    0.000907502   0.00235338   -0.00259266    0.00114594
    +11  -0.0013693    0.0125762    -0.00145726    0.0119688    -0.00362363    0.00954477    0.000894749   0.00311196    0.000186917   0.00923739    0.0036434     0.00484736    0.000288834  -0.00269382   -0.00194147   -0.000702207  -0.00245996   -0.000458531
    +12   0.00497523   0.0154863     0.0409999    -0.00832204   -0.00216091    0.0149159     0.011796      0.0121391    -0.00292353   -0.00532504   -0.00427894    0.000550893  -0.00408841    0.000520159  -0.00344571    0.000625647   0.000271049  -0.00165807
    +13  -0.0541357   -0.0291498     0.0140122     0.00292223    0.00128359    0.00301256   -0.00581861   -0.00397323    0.000588485   0.0025976    -0.00442985   -0.00603182    0.00326815    0.00326603    0.000384467  -0.00134404   -0.00160027   -0.00261985
    +14  -0.0493144    0.0120223    -0.0163111     0.0103746    -0.0126512    -0.011453      0.00488614   -0.00586095    0.0027455    -0.00434342    0.00203457   -0.000941868  -0.00426973   -0.00447805   -0.00239537   -0.00320013    0.000877498   0.000673572
    +15  -0.00654048   0.00225524   -0.028207      0.00306531    0.00321072   -0.000599231   0.00320363   -0.0059508    -0.00586048    0.0031903    -0.00613799    0.00471076   -0.00101853    0.00294667   -0.000548534   0.00402922    0.000405583   2.6607e-5
    +16   0.0300802    0.0075843     0.00364836   -0.00205771   -0.0148831     0.0211394    -0.000508637   0.0036868     0.0109845    -0.00574404   -0.00920237    0.0007153     0.000544823  -0.00209521    0.000474541  -0.00052208    0.00180017    0.00202094
    +17  -0.0110775    0.0373997    -0.00242133    0.00827109   -0.000567586  -0.0141686    -0.000939656   0.00843637   -0.00590348    0.00649057    0.00259619   -0.000897277   0.00443368   -0.0047585    -0.00160148    0.000335684   0.00152076   -0.00300398
    +18   0.0391783    0.0248007     0.0308429     0.00118303    0.00981074    0.00261316   -0.00100239   -0.0062546    -0.00491006   -0.00506867    0.00441608   -0.00367774   -0.00481009   -0.000493728  -0.00329753    0.000419403   0.000711267   0.000406243
    +19   0.0138738   -0.0443171    -0.00598066    0.00585226    0.00596223    0.00680714   -0.0079294    -0.00269779   -0.00426069   -0.00718608    0.00761514    0.00336824   -0.00295577   -0.00264683    0.00316699   -0.000418376  -0.00240164   -0.00413196
    +20   0.0173164   -0.0215417     0.000863689  -0.0205664     0.00121695    0.00307745    0.00191828   -0.00849558   -0.00147893    0.00180504    0.00814434    0.00372913    0.00188294   -0.00170647   -0.00451407   -0.00100769   -0.000238128  -0.000257117
    +21   0.00338984   0.00237562    0.0237069    -0.0129184     0.00148197   -0.000855367   0.00148785    0.00142366    0.00320966    0.00781237    0.000800995  -0.000516126   0.00440079   -0.0079143     0.00215576    0.00201592   -0.000335618   0.00337192
    +22  -0.00746071  -0.0116344     0.0021644     0.0152239     0.00723169    0.0120803    -0.000485058   0.00653526    0.0026666     0.00152026    0.0135607    -0.00247612    0.00348543    3.45051e-6    0.0017885     0.000179426  -0.000524643  -0.000805656
    +23   0.0478442   -0.0227649    -0.0113793    -0.00367693    0.0106966     0.00169994    0.0135303    -0.00344929    0.000128235   0.00063693   -0.00225447    0.000880574  -0.00665083   -0.0050547    -0.00295617   -0.00422433    0.00166798   -0.00189465
    +24  -0.0142467    0.0166931     0.00516018    0.00593988   -0.0210703     0.00438546    0.00643305    0.00174866    0.00505729    0.000463517   0.00763753   -0.00417294   -0.00156206    0.00540319   -0.00301265   -0.00408336   -0.00144362   -0.000137294
    +25   0.00108012   0.0195339     0.011519      0.0110158     0.00193433    0.0107534    -0.00146174    0.000236797   0.00226925   -0.00744152    0.00199678   -0.00445237    0.00273993   -0.000207735  -0.00191042    0.00121896    0.00195283   -0.00274164
    +26   0.0123466    0.0083253     0.00519553   -0.00196478    0.0137825    -0.00233978   -0.00771765   -0.00232805   -0.00279333    0.00340724    0.0012353    -0.00362154   -0.0013554     0.000632953  -2.37112e-5    0.00141247   -0.000568908  -0.000973567
    +27  -0.00893091   0.00641791    0.0087648     0.00424429   -0.000824081  -0.00761539   -0.0152518     0.00995065    0.00317758    8.84094e-5   -0.00419563   -0.00124495   -0.00589762   -0.000929293   0.00477719    0.00377025    0.00267074    0.000761405
    +28   0.0378644   -0.0125169     0.012799      0.0178141     0.00260966   -0.00752201    0.00299546   -0.00777486    0.00426756    0.00566038    0.00107451   -0.000215202  -0.00470252    0.00209217   -0.000578698   0.00150591   -0.00148331    0.00229085
    +29   0.00205475   0.0304241    -0.0354979     0.00394855   -0.00350914    0.00725592   -0.00678139    0.000307436  -0.00315394   -0.00689183    0.000456785   0.00368637    0.00277269   -0.00277076   -0.00422942    0.00223455    0.0015448    -0.00234455
    +30   0.0749975   -0.00999942    0.00367276    0.0100629    -0.00671752   -0.011357      0.00301586    0.000408736   0.00259563    0.000303288  -0.000111357  -0.00159763    0.00161827   -0.000545339   0.00377406    0.00268094    0.00406555   -0.00203144
    +31   0.0209729    0.00213421    0.00669869    0.016557      0.00403684   -0.0178951     0.0107244     0.0111298     0.00610797   -0.00390215   -0.00353771   -0.00178467    0.00235713    0.000973802   0.000274041   0.00218045   -0.00215689   -0.00158819
    +32  -0.0244084   -0.0371206     0.0192767    -0.000685794   0.0158289    -0.001451     -0.00509477    0.00577056   -0.00513049   -0.00950968   -0.00158958    0.000989458  -0.000699212   0.00122133   -0.000191417   0.000911926   0.00209233   -6.04374e-5
    +33   0.00565764  -0.0172793     0.00401092   -0.00793658    0.00504771   -0.00220381    0.00224319    0.0071918    -0.0124133     0.00175162    0.00348751    0.00633021   -0.00260535    0.00565187   -0.00186287   -0.000238933   0.000666333   0.00250607
    +34   0.00185581  -0.0166196    -0.0197269     0.00699341    0.00647246   -0.00303065   -0.000117067   0.00490106    0.00667588   -0.00855122    0.00302462    0.00173228    0.00553969   -0.00468124    0.00121978    0.0005079     0.000420239   0.00253235
    +35   0.0199811    0.0267965     0.0129649     0.00264194    0.000195136  -0.00349662    0.00294599   -0.00187851    0.00177767   -0.0053757    -0.00330811   -0.00295473    0.00208629   -6.97773e-5   -0.00153972   -0.000773065  -0.00157575   -0.000197057
    +36   0.0175704    0.0191343    -0.0116551     0.00882917   -0.0104714     0.0103777     0.00118041   -0.000696881   0.00192364    0.00744034    0.00497109   -0.00164206    0.00162482   -0.00139405    0.00167977    0.000693101  -0.00132024    0.00297973
    +37  -0.00462744  -0.013417      0.00735863    0.0138801    -0.0058212    -0.00238145   -0.00576575    0.00188503    0.00101854    0.0035232     0.0016009     0.00106877   -0.00593854   -0.0015165    -0.00563642   -0.000339869   0.00216456    0.002153
    +38  -0.0218719    0.00531191    0.00305154    0.0241393     0.0234907     0.00316473    0.0020773    -0.00469298   -0.00845531    0.00456344   -0.000534739   0.00131404   -0.00166945   -0.000113877  -0.00168502    0.00333815   -0.00307554    0.00114466
    +39  -0.00848638   0.0208304     0.00949937    0.0226454     0.0052942    -0.000851704   0.00632965    2.91971e-5    0.00329463    6.28469e-5    0.00660731    0.00235582   -0.00130279   -0.00141865    0.00530658   -0.00248136    0.000456183   0.00125713
    +40  -0.0887529   -0.0108083    -0.00348235   -0.0197061    -0.00851786   -0.00490488    0.00159713    0.00351037    0.0148414    -0.00401737    0.00779929    0.00245023   -0.00253298   -0.000226246  -0.000206421   0.00510786    0.00148421    0.00186788
    +41   0.00130006   0.00193007   -0.00297337    0.0070658     0.00888416    0.00665004   -0.013746      0.000961125   0.00363303    0.00316905    0.000576911  -0.00659932    0.00136165    0.0013939    -0.00380487   -0.00444913    0.00366095    0.00144111
    +42  -0.0207553    0.0174796    -0.00445662   -0.0117613     0.0273261    -0.00065484    0.00296882    0.00593266    0.00162045   -0.00318673    0.0066341    -0.0053347     0.000440878  -0.000644585  -0.00244859    0.00184264    0.00345959   -0.000426283
    +43   0.0413948    0.00307635   -0.00665062   -0.00226029    0.017443     -0.00424136    0.00950125   -0.00429922    0.00148225   -0.000166312   0.00294757   -0.00069645    0.000696539   0.000366659   0.00282844   -0.00230084    0.0053369     0.00238474
    +44   0.00449575   0.0201137     0.03094      -0.0058886    -0.00146264    0.0101428    -0.00516029    0.00543426   -0.00941967    0.000969442  -0.000431407   0.0064443     0.00115545   -0.00181689    0.00364823   -0.000426309   0.000849352  -0.00167685
    +45  -0.0205292   -0.00157548    0.013357     -0.00792343    0.00744915    0.00216668   -0.00243796    0.00180573    0.01512       0.00713893   -0.00283512    0.00430074    0.000788886   0.0049491     0.0029426    -0.00139686    0.00105337   -0.00239361
    +46  -0.0215505   -0.0112917     0.013841      0.0111599    -0.0105729     0.00953035    0.0113897    -0.00673481   -0.0100248     0.00344613    0.00262901    0.0047878     0.00566946   -6.60172e-5    0.00414744    0.00111141    0.00450865   -0.00145945
    +47  -0.0171993    0.0180146     0.00810394   -0.00791244    0.0061704     0.00923438    0.000727892  -0.0152243     0.00748635   -0.00599911   -0.00175649    0.00265434   -8.49398e-5    0.00305952   -0.00198115    0.00274446   -0.0028668     0.00323797
    +48   0.0587549    0.0116068    -0.00915491    0.00448539    0.0104133     0.00457871    0.00126112    0.00499596    0.00964989   -0.00404286    0.000207311   0.003728     -0.000433589  -0.000303131   0.00412588    0.000467283  -0.000916261  -0.00103631
    +49  -0.00166257   0.0250389     0.00797097    0.000683472  -0.000895449  -0.0133557    -0.00573426    0.000680622   0.00069621    0.00638431   -0.00245348    0.00498899    0.00507946    0.0057863    -0.00069408    0.0014596     0.000877213  -0.000692365
    +50  -0.0355097    0.0143079    -0.00981991    0.00946907   -0.00422843   -0.00254884    0.00491884    0.00651818   -0.00548423   -0.0071809     9.81603e-5    0.00390103   -0.00712449    0.0013088     0.00694234   -0.00320143    0.000147409   0.00234526
    +51   0.0456319   -0.0188437     0.00614929    0.01619      -0.0156405     0.00353768   -0.00911906    0.000874972  -0.00121217   -0.00403428   -0.000414905   0.00681573    0.00859836    0.00350106   -0.00263157   -0.00122084    0.00183226    0.00257702
    +52   0.00746721   0.0133773    -0.0340613    -0.0139034     0.00655522    0.00929538    0.000770716  -0.000483502  -0.00600155    0.00201797    0.0011251     0.00179484   -2.38878e-5    0.00486216    0.00282832    0.00255029    0.00367921    0.00129338
    +53   0.00823236  -0.00600734   -0.0200329     0.00202998   -0.0011313     0.0105144     0.00321895    0.00687414    0.000987698   0.00431901    0.000760463  -0.00635147   -0.00119575    0.00474285    4.40898e-5    0.00580837   -0.00332298   -0.00201341
    +54  -0.043754    -0.00171994   -0.00111157    0.00123094   -0.00428039    0.0027972     0.00934907   -0.00596239   -0.00226019    0.001642     -0.00513074   -0.00589632    0.00344517   -0.0042949     0.0025378     0.00306413    0.00186166    0.00125999
    +55   0.0430398   -0.000525733   0.0081576    -0.00839141   -0.00347855   -0.00933299    0.00251806   -0.0126012     0.002086      0.00272973    0.00204035   -0.000224255  -0.000607192  -0.000454776  -0.000157181   0.00250081    0.00145433   -0.00163108
    +56   0.0305092   -0.00319322   -0.010629      0.0139009     0.00442941    0.00855659    0.00087527   -0.00330425    0.000399393  -0.000737765  -0.00150343   -0.00754475    0.000704529   0.00851631    0.00185909   -0.00126123    0.00232031    0.00223781
    +57   0.00321453  -0.0190408    -0.0279848     0.00741802   -0.0157076     0.00592558    0.0020086     0.00843992   -0.00442316    0.00325392   -0.002545     -0.00268433   -0.00623548   -0.00142257   -0.00199612    0.0016597     0.000405685  -0.00229266
    +58   0.0156328   -0.0074322     0.0066988    -0.0114629    -0.0168092     0.00328227   -0.00226964   -0.00110748    0.000440872   0.00227572    0.00827165   -0.00488151   -0.00316671   -2.58046e-5    0.00360288    0.00115025    0.00316887   -0.00204823
    +59  -0.00151264   0.00426245    0.00115303    0.00338067    0.00957651    0.0116283     0.00361068    0.0102905     0.00246382    0.00700902    0.00252521    0.00257786    0.000578243  -0.00384276   -0.00597088    0.00283491    0.00171675    0.00226962
    +─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
    +
    +Importance of components:
    +──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
    +                                 PC1        PC2        PC3         PC4        PC5         PC6         PC7         PC8         PC9        PC10       PC11         PC12         PC13         PC14        PC15         PC16         PC17         PC18
    +──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
    +SS Loadings (Eigenvalues)  0.0559745  0.0192925  0.0128414  0.00672244  0.0055061  0.00364815  0.00229962  0.00223028  0.00206984  0.00135745  0.00119    0.000805397  0.000775895  0.000619591  0.00052072  0.000351929  0.000282879  0.000224033
    +Variance explained         0.474806   0.16365    0.108928   0.0570235   0.0467058  0.0309456   0.0195066   0.0189185   0.0175575   0.0115146   0.0100942  0.00683182   0.00658157   0.00525572   0.00441704  0.00298526   0.00239954   0.00190038
    +Cumulative variance        0.474806   0.638456   0.747384   0.804407    0.851113   0.882059    0.901565    0.920484    0.938041    0.949556    0.95965    0.966482     0.973063     0.978319     0.982736    0.985721     0.988121     0.990021
    +Proportion explained       0.479592   0.165299   0.110026   0.0575982   0.0471765  0.0312575   0.0197032   0.0191092   0.0177345   0.0116307   0.010196   0.00690068   0.00664791   0.00530869   0.00446156  0.00301535   0.00242373   0.00191953
    +Cumulative proportion      0.479592   0.644891   0.754917   0.812515    0.859692   0.890949    0.910652    0.929761    0.947496    0.959127    0.969323   0.976223     0.982871     0.98818      0.992641    0.995657     0.99808      1.0
    +──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

    Now let’s show explained variance of each principal component.

    plot(principalvars(fp), title="explained variance", label="Tangent PCA")

    The next plot shows how projections on the first two pricipal components look like.

    fig = plot(; title="coordinates per gesture of the first two principal components")
    +for label_num in [0, 1]
    +    mask = hand_labels .== label_num
    +    cur_hand_logs = red_coords[:, mask]
    +    cur_t = MultivariateStats.transform(fp, cur_hand_logs)
    +    scatter!(fig, cur_t[1, :], cur_t[2, :], label="gesture " * string(label_num))
    +end
    +xlabel!(fig, "principal component 1")
    +ylabel!(fig, "principal component 2")
    +fig

    The following heatmap displays pairwise distances between gestures. We can use them for clustering, classification, etc.

    hand_distances = [
    +    distance(Mshape, hands_projected[i], hands_projected[j]) for
    +    i in eachindex(hands_projected), j in eachindex(hands_projected)
    +]
    +heatmap(hand_distances, aspect_ratio=:equal)

    diff --git a/v0.8.79/tutorials/hand-gestures_files/figure-commonmark/cell-11-output-1.svg b/v0.8.79/tutorials/hand-gestures_files/figure-commonmark/cell-11-output-1.svg new file mode 100644 index 0000000000..0cff4c5585 --- /dev/null +++ b/v0.8.79/tutorials/hand-gestures_files/figure-commonmark/cell-11-output-1.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v0.8.79/tutorials/hand-gestures_files/figure-commonmark/cell-12-output-1.svg b/v0.8.79/tutorials/hand-gestures_files/figure-commonmark/cell-12-output-1.svg new file mode 100644 index 0000000000..c40b1008b9 --- /dev/null +++ b/v0.8.79/tutorials/hand-gestures_files/figure-commonmark/cell-12-output-1.svg @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v0.8.79/tutorials/hand-gestures_files/figure-commonmark/cell-13-output-1.svg b/v0.8.79/tutorials/hand-gestures_files/figure-commonmark/cell-13-output-1.svg new file mode 100644 index 0000000000..0f779d8f6d --- /dev/null +++ b/v0.8.79/tutorials/hand-gestures_files/figure-commonmark/cell-13-output-1.svg @@ -0,0 +1,643 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v0.8.79/tutorials/hand-gestures_files/figure-commonmark/cell-5-output-1.svg b/v0.8.79/tutorials/hand-gestures_files/figure-commonmark/cell-5-output-1.svg new file mode 100644 index 0000000000..105b7dfd1e --- /dev/null +++ b/v0.8.79/tutorials/hand-gestures_files/figure-commonmark/cell-5-output-1.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/v0.8.79/tutorials/integration.html b/v0.8.79/tutorials/integration.html new file mode 100644 index 0000000000..9761d0b7dd --- /dev/null +++ b/v0.8.79/tutorials/integration.html @@ -0,0 +1,77 @@ + +integrate on manifolds and handle probability densities · Manifolds.jl

    Integration

    This part of documentation covers integration of scalar functions defined on manifolds $f \colon \mathcal{M} \to \mathbb{R}$:

    \[\int_{\mathcal M} f(p) \mathrm{d}p\]

    The basic concepts are derived from geometric measure theory. In principle, there are many ways in which a manifold can be equipped with a measure that can be later used to define an integral. One of the most popular ways is based on pushing the Lebesgue measure on a tangent space through the exponential map. Any other suitable atlas could be used, not just the one defined by normal coordinates, though each one requires different volume density corrections due to the Jacobian determinant of the pushforward. Manifolds.jl provides the function volume_density that calculates that quantity, denoted $\theta_p(X)$. See for example [BP19], Definition 11, for a precise description using Jacobi fields.

    While many sources define volume density as a function of two points, Manifolds.jl decided to use the more general point-tangent vector formulation. The two-points variant can be implemented as

    using Manifolds
    +volume_density_two_points(M::AbstractManifold, p, q) = volume_density(M, p, log(M, p, q))
    volume_density_two_points (generic function with 1 method)

    The simplest way to of integrating a function on a compact manifold is through a 📖 Monte Carlo integrator. A simple variant can be implemented as follows (assuming uniform distribution of rand):

    using LinearAlgebra, Distributions, SpecialFunctions
    +function simple_mc_integrate(M::AbstractManifold, f; N::Int = 1000)
    +    V = manifold_volume(M)
    +    sum = 0.0
    +    q = rand(M)
    +    for i in 1:N
    +        sum += f(M, q)
    +        rand!(M, q)
    +    end
    +    return V * sum/N
    +end
    simple_mc_integrate (generic function with 1 method)

    We used the function manifold_volume to get the volume of the set over which the integration is performed, as described in the linked Wikipedia article.

    Distributions

    We will now try to verify that volume density correction correctly changes probability density of an exponential-wrapped normal distribution. pdf_tangent_space (defined in the next code block) represents probability density of a normally distributed random variable $X_T$ in the tangent space $T_p \mathcal{M}$. Its probability density (with respect to the Lebesgue measure of the tangent space) is $f_{X_T}\colon T_p \mathcal{M} \to \mathbb{R}$.

    pdf_manifold (defined below) refers to the probability density of the distribution $X_M$ from the tangent space $T_p \mathcal{M}$ wrapped using exponential map on the manifold. The formula for probability density with respect to pushforward measure of the Lebesgue measure in the tangent space reads

    \[f_{X_M}(q) = \sum_{X \in T_p\mathcal{M}, \exp_p(X)=q} \frac{f_{X_T}(X)}{\theta_p(X)}\]

    volume_density function calculates the correction $\theta_p(X)$.

    function pdf_tangent_space(M::AbstractManifold, p)
    +    return pdf(MvNormal(zeros(manifold_dimension(M)), 0.2*I), p)
    +end
    +
    +function pdf_manifold(M::AbstractManifold, q)
    +    p = [1.0, 0.0, 0.0]
    +    X = log(M, p, q)
    +    Xc = get_coordinates(M, p, X, DefaultOrthonormalBasis())
    +    vd = abs(volume_density(M, p, X))
    +    if vd > eps()
    +        return pdf_tangent_space(M, Xc) / vd
    +    else
    +        return 0.0
    +    end
    +end
    +
    +println(simple_mc_integrate(Sphere(2), pdf_manifold; N=1000000))
    0.9997767542496258

    The function simple_mc_integrate, defined in the previous section, is used to verify that the density integrates to 1 over the manifold.

    Note that our pdf_manifold implements a simplified version of $f_{X_M}$ which assumes that the probability mass of pdf_tangent_space outside of (local) injectivity radius at $p$ is negligible. In such case there is only one non-zero summand in the formula for $f_{X_M}(q)$, namely $X=\log_p(q)$. Otherwise we would have to consider other vectors $Y\in T_p \mathcal{M}$ such that $\exp_p(Y) = q$ in that sum.

    Remarkably, exponential-wrapped distributions possess three important qualities [CLLD22]:

    • Densities of $X_M$ are explicit. There is no normalization constant that needs to be computed like in truncated distributions.
    • Sampling from $X_M$ is easy. It suffices to get a sample from $X_T$ and pass it to the exponential map.
    • If mean of $X_T$ is 0, then there is a simple correspondence between moments of $X_M$ and $X_T$, for example $p$ is the mean of $X_M$.

    Kernel density estimation

    We can also make a Pelletier’s isotropic kernel density estimator. Given points $p_1, p_2, \dots, p_n$ on $d$-dimensional manifold $\mathcal M$ the density at point $q$ is defined as

    \[f(q) = \frac{1}{n h^d} \sum_{i=1}^n \frac{1}{\theta_q(\log_q(p_i))}K\left( \frac{d(q, p_i)}{h} \right),\]

    where $h$ is the bandwidth, a small positive number less than the injectivity radius of $\mathcal M$ and $K\colon\mathbb{R}\to\mathbb{R}$ is a kernel function. Note that Pelletier’s estimator can only use radially-symmetric kernels. The radially symmetric multivariate Epanechnikov kernel used in the example below is described in [LW19].

    struct PelletierKDE{TM<:AbstractManifold,TPts<:AbstractVector}
    +    M::TM
    +    bandwidth::Float64
    +    pts::TPts
    +end
    +
    +(kde::PelletierKDE)(::AbstractManifold, p) = kde(p)
    +function (kde::PelletierKDE)(p)
    +    n = length(kde.pts)
    +    d = manifold_dimension(kde.M)
    +    sum_kde = 0.0
    +    function epanechnikov_kernel(x)
    +        if x < 1
    +            return gamma(2+d/2) * (1-x^2)/(π^(d/2))
    +        else
    +            return 0.0
    +        end
    +    end
    +    for i in 1:n
    +        X = log(kde.M, p, kde.pts[i])
    +        Xn = norm(kde.M, p, X)
    +        sum_kde += epanechnikov_kernel(Xn / kde.bandwidth) / volume_density(kde.M, p, X)
    +    end
    +    sum_kde /= n * kde.bandwidth^d
    +    return sum_kde
    +end
    +
    +M = Sphere(2)
    +pts = rand(M, 8)
    +kde = PelletierKDE(M, 0.7, pts)
    +println(simple_mc_integrate(Sphere(2), kde; N=1000000))
    +println(kde(rand(M)))
    1.000087600306794
    +0.027242409437460688

    Technical notes

    This section contains a few technical notes that are relevant to the problem of integration on manifolds but can be freely skipped on the first read of the tutorial.

    Conflicting statements about volume of a manifold

    manifold_volume and volume_density are closely related to each other, though very few sources explore this connection, and some even claiming a certain level of arbitrariness in defining manifold_volume. Volume is sometimes considered arbitrary because Riemannian metrics on some spaces like the manifold of rotations are defined with arbitrary constants. However, once a constant is picked (and it must be picked before any useful computation can be performed), all geometric operations must follow in a consistent way: inner products, exponential and logarithmic maps, volume densities, etc. Manifolds.jl consistently picks such constants and provides a unified framework, though it sometimes results in picking a different constant than what is the most popular in some sub-communities.

    Haar measures

    On Lie groups the situation regarding integration is more complicated. Invariance under left or right group action is a desired property that leads one to consider Haar measures [Tor20]. It is, however, unclear what are the practical benefits of considering Haar measures over the Lebesgue measure of the underlying manifold, which often turns out to be invariant anyway.

    Integration in charts

    Integration through charts is an approach currently not supported by Manifolds.jl. One has to define a suitable set of disjoint charts covering the entire manifold and use a method for multivariate Euclidean integration. Note that ranges of parameters have to be adjusted for each manifold and scaling based on the metric needs to be applied. See [BST03] for some considerations on symmetric spaces.

    References

    Literature

    [BST03]
    +
    +
    L. J. Boya, E. Sudarshan and T. Tilma. Volumes of compact manifolds. Reports on Mathematical Physics 52, 401–422 (2003).
    +
    [BP19]
    +
    +
    A. L. Brigant and S. Puechmorel. Approximation of Densities on Riemannian Manifolds. Entropy 21, 43 (2019).
    +
    [CLLD22]
    +
    +
    E. Chevallier, D. Li, Y. Lu and D. B. Dunson. Exponential-wrapped distributions on symmetric spaces. ArXiv Preprint (2022).
    +
    [LW19]
    +
    +
    N. Langren{é} and X. Warin. Fast and Stable Multivariate Kernel Density Estimation by Fast Sum Updating. Journal of Computational and Graphical Statistics 28, 596–608 (2019).
    +
    [Tor20]
    +
    +
    S. Tornier. Haar Measures (2020).
    +
    +
    diff --git a/v0.8.79/tutorials/working-in-charts.html b/v0.8.79/tutorials/working-in-charts.html new file mode 100644 index 0000000000..a48d4d56b8 --- /dev/null +++ b/v0.8.79/tutorials/working-in-charts.html @@ -0,0 +1,79 @@ + +work in charts · Manifolds.jl

    Working in charts

    In this tutorial we will learn how to use charts for basic geometric operations like exponential map, logarithmic map and parallel transport.

    There are two conceptually different approaches to working on a manifold: working in charts and chart-free representations.

    The first one, widespread in differential geometry textbooks, is based on defining an atlas on the manifold and performing computations in selected charts. This approach, while generic, is not ideally suitable in all circumstances. For example, working in charts that do not cover the entire manifold causes issues with having to switch charts when operating on a manifold.

    The second one is beneficital, if there exist a representation of points and tangent vectors for a manifold, which allow for efficient closed-form formulas for standard functions like the exponential map or Riemannian distance in this representation. These computations are then chart-free. Manifolds.jl supports both approaches, although the chart-free approach is the main focus of the library.

    In this tutorial we focus on chart-based computation.

    using Manifolds, RecursiveArrayTools, OrdinaryDiffEq, DiffEqCallbacks, BoundaryValueDiffEq

    The manifold we consider is the M is the torus in form of the EmbeddedTorus, that is the representation defined as a surface of revolution of a circle of radius 2 around a circle of radius 3. The atlas we will perform computations in is its DefaultTorusAtlas A, consistting of a family of charts indexed by two angles, that specify the base point of the chart.

    We will draw geodesics time between 0 and t_end, and then sample the solution at multiples of dt and draw a line connecting sampled points.

    M = Manifolds.EmbeddedTorus(3, 2)
    +A = Manifolds.DefaultTorusAtlas()
    Manifolds.DefaultTorusAtlas()

    Setup

    We will first set up our plot with an empty torus. param_points are points on the surface of the torus that will be used for basic surface shape in Makie.jl. The torus will be colored according to its Gaussian curvature stored in gcs. We later want to have a color scale that has negative curvature blue, zero curvature white and positive curvature red so gcs_mm is the largest absolute value of the curvature that will be needed to properly set range of curvature values.

    In the documentation this tutorial represents a static situation (without interactivity). Makie.jl rendering is turned off.

    # using GLMakie, Makie
    +# GLMakie.activate!()
    +
    +"""
    +    torus_figure()
    +
    +This function generates a simple plot of a torus and returns the new figure containing the plot.
    +"""
    +function torus_figure()
    +    fig = Figure(resolution=(1400, 1000), fontsize=16)
    +    ax = LScene(fig[1, 1], show_axis=true)
    +    ϴs, φs = LinRange(-π, π, 50), LinRange(-π, π, 50)
    +    param_points = [Manifolds._torus_param(M, θ, φ) for θ in ϴs, φ in φs]
    +    X1, Y1, Z1 = [[p[i] for p in param_points] for i in 1:3]
    +    gcs = [gaussian_curvature(M, p) for p in param_points]
    +    gcs_mm = max(abs(minimum(gcs)), abs(maximum(gcs)))
    +    pltobj = surface!(
    +        ax,
    +        X1,
    +        Y1,
    +        Z1;
    +        shading=true,
    +        ambient=Vec3f(0.65, 0.65, 0.65),
    +        backlight=1.0f0,
    +        color=gcs,
    +        colormap=Reverse(:RdBu),
    +        colorrange=(-gcs_mm, gcs_mm),
    +        transparency=true,
    +    )
    +    wireframe!(ax, X1, Y1, Z1; transparency=true, color=:gray, linewidth=0.5)
    +    zoom!(ax.scene, cameracontrols(ax.scene), 0.98)
    +    Colorbar(fig[1, 2], pltobj, height=Relative(0.5), label="Gaussian curvature")
    +    return ax, fig
    +end
    torus_figure

    Values for the geodesic

    solve_for is a helper function that solves a parallel transport along geodesic problem on the torus M. p0x is the $(\theta, \varphi)$ parametrization of the point from which we will transport the vector. We first calculate the coordinates in the embedding of p0x and store it as p, and then get the initial chart from atlas A appropriate for starting working at point p. The vector we transport has coordinates Y_transp in the induced tangent space basis of chart i_p0x. The function returns the full solution to the parallel transport problem, containing the sequence of charts that was used and solutions of differential equations computed using OrdinaryDiffEq.

    bvp_i is needed later for a different purpose, it is the chart index we will use for solving the logarithmic map boundary value problem in.

    Next we solve the vector transport problem solve_for([θₚ, φₚ], [θₓ, φₓ], [θy, φy]), sample the result at the selected time steps and store the result in geo. The solution includes the geodesic which we extract and convert to a sequence of points digestible by Makie.jl, geo_ps. [θₚ, φₚ] is the parametrization in chart (0, 0) of the starting point of the geodesic. The direction of the geodesic is determined by [θₓ, φₓ], coordinates of the tangent vector at the starting point expressed in the induced basis of chart i_p0x (which depends on the initial point). Finally, [θy, φy] are the coordinates of the tangent vector that will be transported along the geodesic, which are also expressed in same basis as [θₓ, φₓ].

    We won’t draw the transported vector at every point as there would be too many arrows, which is why we select every 100th point only for that purpose with pt_indices. Then, geo_ps_pt contains points at which the transported vector is tangent to and geo_Ys the transported vector at that point, represented in the embedding.

    The logarithmic map will be solved between points with parametrization bvp_a1 and bvp_a2 in chart bvp_i. The result is assigned to variable bvp_sol and then sampled with time step 0.05. The result of this sampling is converted from parameters in chart bvp_i to point in the embedding and stored in geo_r.

    function solve_for(p0x, X_p0x, Y_transp, T)
    +    p = [Manifolds._torus_param(M, p0x...)...]
    +    i_p0x = Manifolds.get_chart_index(M, A, p)
    +    p_exp = Manifolds.solve_chart_parallel_transport_ode(
    +        M,
    +        [0.0, 0.0],
    +        X_p0x,
    +        A,
    +        i_p0x,
    +        Y_transp;
    +        final_time=T,
    +    )
    +    return p_exp
    +end;

    Solving parallel Transport ODE

    We set the end time t_end and time step dt.

    t_end = 2.0
    +dt = 1e-1
    0.1

    We also parametrise the start point and direction.

    θₚ = π/10
    +φₚ = -π/4
    +θₓ = π/2
    +φₓ = 0.7
    +θy = 0.2
    +φy = -0.1
    +
    +geo = solve_for([θₚ, φₚ], [θₓ, φₓ], [θy, φy], t_end)(0.0:dt:t_end);
    +# geo_ps = [Point3f(s[1]) for s in geo]
    +# pt_indices = 1:div(length(geo), 10):length(geo)
    +# geo_ps_pt = [Point3f(s[1]) for s in geo[pt_indices]]
    +# geo_Ys = [Point3f(s[3]) for s in geo[pt_indices]]
    +
    +# ax1, fig1 = torus_figure()
    +# arrows!(ax1, geo_ps_pt, geo_Ys, linewidth=0.05, color=:blue)
    +# lines!(geo_ps; linewidth=4.0, color=:green)
    +# fig1

    fig-pt

    Solving the logairthmic map ODE

    θ₁=π/2
    +φ₁=-1.0
    +θ₂=-π/8
    +φ₂=π/2
    +
    +bvp_i = (0, 0)
    +bvp_a1 = [θ₁, φ₁]
    +bvp_a2 = [θ₂, φ₂]
    +bvp_sol = Manifolds.solve_chart_log_bvp(M, bvp_a1, bvp_a2, A, bvp_i);
    +# geo_r = [Point3f(get_point(M, A, bvp_i, p[1:2])) for p in bvp_sol(0.0:0.05:1.0)]
    +
    +# ax2, fig2 = torus_figure()
    +# lines!(geo_r; linewidth=4.0, color=:green)
    +# fig2

    fig-geodesic

    An interactive Pluto version of this tutorial is available in file tutorials/working-in-charts.jl.

    diff --git a/v0.8.79/tutorials/working-in-charts/working-in-charts-geodesic.png b/v0.8.79/tutorials/working-in-charts/working-in-charts-geodesic.png new file mode 100644 index 0000000000000000000000000000000000000000..9a73057ffca24a6f53173c562fba77ddda58c786 GIT binary patch literal 322266 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

    Y8xlG>2CoB+14ZA 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⁣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�w-3q-5A7 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%0A2`Y`BbGEnMJ`2!)8z5eL^}2hvokeIx>0-tF?o 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 T$XtKvD+l|<3y%NEGy1;);3{7n literal 0 HcmV?d00001 diff --git a/v0.8.79/tutorials/working-in-charts/working-in-charts-transport.png b/v0.8.79/tutorials/working-in-charts/working-in-charts-transport.png new file mode 100644 index 0000000000000000000000000000000000000000..e1c54d4fb2180187426c28cb717f359166e4cb77 GIT binary patch literal 325572 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%0DEX@ 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

    *}! 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 A-v9sr literal 0 HcmV?d00001 diff --git a/versions.js b/versions.js index 31d372036c..6f208cc334 100644 --- a/versions.js +++ b/versions.js @@ -10,5 +10,5 @@ var DOC_VERSIONS = [ "v0.1", "dev", ]; -var DOCUMENTER_NEWEST = "v0.8.78"; +var DOCUMENTER_NEWEST = "v0.8.79"; var DOCUMENTER_STABLE = "stable";