diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..e026567 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,40 @@ +name: Web + +on: + push: + branches: ["main"] + + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Pages + uses: actions/configure-pages@v5 + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: 'web/' + + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/document.yml b/.github/workflows/document.yml new file mode 100644 index 0000000..3ee1f6f --- /dev/null +++ b/.github/workflows/document.yml @@ -0,0 +1,42 @@ +name: Web +# (Learning about) Autogenerated documentation for GitHub Pages. + +on: + pull_request: + branches: [ "main" ] + + +jobs: + documentation: + runs-on: ubuntu-latest + + steps: + - name: Checkout branch + uses: actions/checkout@v4 + with: + repository: ${{ github.event.pull_request.head.repo.full_name }} + ref: ${{ github.event.pull_request.head.ref }} + + - name: Generate documentation + uses: mattnotmitt/doxygen-action@v1.12.0 + + - name: No Jekyll + run: touch web/.nojekyll + + - name: Commit changes + uses: EndBug/add-and-commit@latest + with: + add: 'web/' + + author_name: Lazy Vayu + author_email: pawanmsr@outlook.com + + commit: --signoff + committer_name: Workflow Automation + committer_email: 25368219+pawanmsr@users.noreply.github.com + + default_author: github_actor + message: 'generate documentation' + + pathspec_error_handling: ignore + push: true diff --git a/Doxyfile b/Doxyfile new file mode 100644 index 0000000..fb71076 --- /dev/null +++ b/Doxyfile @@ -0,0 +1,425 @@ +# Doxyfile 1.16.1 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = "N-Methods" +PROJECT_NUMBER = +PROJECT_BRIEF = +PROJECT_LOGO = +PROJECT_ICON = +OUTPUT_DIRECTORY = +CREATE_SUBDIRS = NO +CREATE_SUBDIRS_LEVEL = 8 +ALLOW_UNICODE_NAMES = NO +OUTPUT_LANGUAGE = English +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = YES +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +JAVADOC_BANNER = NO +QT_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +PYTHON_DOCSTRING = YES +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 4 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +OPTIMIZE_FOR_FORTRAN = NO +OPTIMIZE_OUTPUT_VHDL = NO +OPTIMIZE_OUTPUT_SLICE = NO +EXTENSION_MAPPING = +MARKDOWN_SUPPORT = YES +MARKDOWN_STRICT = YES +TOC_INCLUDE_HEADINGS = 6 +MARKDOWN_ID_STYLE = DOXYGEN +AUTOLINK_SUPPORT = YES +AUTOLINK_IGNORE_WORDS = +BUILTIN_STL_SUPPORT = NO +CPP_CLI_SUPPORT = NO +SIP_SUPPORT = NO +IDL_PROPERTY_SUPPORT = YES +DISTRIBUTE_GROUP_DOC = NO +GROUP_NESTED_COMPOUNDS = NO +SUBGROUPING = YES +INLINE_GROUPED_CLASSES = NO +INLINE_SIMPLE_STRUCTS = NO +TYPEDEF_HIDES_STRUCT = NO +LOOKUP_CACHE_SIZE = 0 +NUM_PROC_THREADS = 1 +TIMESTAMP = NO +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = NO +EXTRACT_PRIV_VIRTUAL = NO +EXTRACT_PACKAGE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +EXTRACT_ANON_NSPACES = NO +RESOLVE_UNNAMED_PARAMS = YES +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_UNDOC_NAMESPACES = YES +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = SYSTEM +HIDE_SCOPE_NAMES = NO +HIDE_COMPOUND_REFERENCE= NO +SHOW_HEADERFILE = YES +SHOW_INCLUDE_FILES = YES +SHOW_GROUPED_MEMB_INC = NO +FORCE_LOCAL_INCLUDES = NO +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_MEMBERS_CTORS_1ST = NO +SORT_GROUP_NAMES = NO +SORT_BY_SCOPE_NAME = NO +STRICT_PROTO_MATCHING = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +GENERATE_REQUIREMENTS = YES +REQ_TRACEABILITY_INFO = YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_FILES = YES +SHOW_NAMESPACES = YES +FILE_VERSION_FILTER = +LAYOUT_FILE = +CITE_BIB_FILES = +EXTERNAL_TOOL_PATH = +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_IF_INCOMPLETE_DOC = YES +WARN_NO_PARAMDOC = NO +WARN_IF_UNDOC_ENUM_VAL = NO +WARN_LAYOUT_FILE = YES +WARN_AS_ERROR = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LINE_FORMAT = "at line $line of file $file" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = src/ include/ doc/ +INPUT_ENCODING = UTF-8 +INPUT_FILE_ENCODING = +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cxxm \ + *.cpp \ + *.cppm \ + *.ccm \ + *.c++ \ + *.c++m \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.idl \ + *.ddl \ + *.odl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.l \ + *.cs \ + *.d \ + *.php \ + *.php4 \ + *.php5 \ + *.phtml \ + *.inc \ + *.m \ + *.markdown \ + *.md \ + *.mm \ + *.dox \ + *.py \ + *.pyw \ + *.f90 \ + *.f95 \ + *.f03 \ + *.f08 \ + *.f18 \ + *.f \ + *.for \ + *.vhd \ + *.vhdl \ + *.ucf \ + *.qsf \ + *.ice +RECURSIVE = NO +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXCLUDE_SYMBOLS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +FILTER_SOURCE_PATTERNS = +USE_MDFILE_AS_MAINPAGE = +IMPLICIT_DIR_DOCS = YES +FORTRAN_COMMENT_AFTER = 72 +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = NO +REFERENCES_LINK_SOURCE = YES +SOURCE_TOOLTIPS = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +CLANG_ASSISTED_PARSING = NO +CLANG_ADD_INC_PATHS = YES +CLANG_OPTIONS = +CLANG_DATABASE_PATH = +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = web/ +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_EXTRA_STYLESHEET = +HTML_EXTRA_FILES = +HTML_COLORSTYLE = AUTO_LIGHT +HTML_COLORSTYLE_HUE = 220 +HTML_COLORSTYLE_SAT = 100 +HTML_COLORSTYLE_GAMMA = 80 +HTML_DYNAMIC_MENUS = YES +HTML_DYNAMIC_SECTIONS = NO +HTML_CODE_FOLDING = YES +HTML_COPY_CLIPBOARD = YES +HTML_PROJECT_COOKIE = +HTML_INDEX_NUM_ENTRIES = 100 +GENERATE_DOCSET = NO +DOCSET_FEEDNAME = "Doxygen generated docs" +DOCSET_FEEDURL = +DOCSET_BUNDLE_ID = org.doxygen.Project +DOCSET_PUBLISHER_ID = org.doxygen.Publisher +DOCSET_PUBLISHER_NAME = Publisher +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +CHM_INDEX_ENCODING = +BINARY_TOC = NO +TOC_EXPAND = NO +SITEMAP_URL = +GENERATE_QHP = NO +QCH_FILE = +QHP_NAMESPACE = org.doxygen.Project +QHP_VIRTUAL_FOLDER = doc +QHP_CUST_FILTER_NAME = +QHP_CUST_FILTER_ATTRS = +QHP_SECT_FILTER_ATTRS = +QHG_LOCATION = +GENERATE_ECLIPSEHELP = NO +ECLIPSE_DOC_ID = org.doxygen.Project +DISABLE_INDEX = NO +GENERATE_TREEVIEW = YES +PAGE_OUTLINE_PANEL = YES +FULL_SIDEBAR = NO +ENUM_VALUES_PER_LINE = 4 +SHOW_ENUM_VALUES = NO +TREEVIEW_WIDTH = 250 +EXT_LINKS_IN_WINDOW = NO +OBFUSCATE_EMAILS = YES +HTML_FORMULA_FORMAT = png +FORMULA_FONTSIZE = 10 +FORMULA_MACROFILE = +USE_MATHJAX = NO +MATHJAX_VERSION = MathJax_2 +MATHJAX_FORMAT = HTML-CSS +MATHJAX_RELPATH = +MATHJAX_EXTENSIONS = +MATHJAX_CODEFILE = +SEARCHENGINE = YES +SERVER_BASED_SEARCH = NO +EXTERNAL_SEARCH = NO +SEARCHENGINE_URL = +SEARCHDATA_FILE = searchdata.xml +EXTERNAL_SEARCH_ID = +EXTRA_SEARCH_MAPPINGS = +#--------------------------------------------------------------------------- +# Configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = +MAKEINDEX_CMD_NAME = makeindex +LATEX_MAKEINDEX_CMD = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4 +EXTRA_PACKAGES = +LATEX_HEADER = +LATEX_FOOTER = +LATEX_EXTRA_STYLESHEET = +LATEX_EXTRA_FILES = +PDF_HYPERLINKS = YES +USE_PDFLATEX = YES +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +LATEX_BIB_STYLE = plainnat +LATEX_EMOJI_DIRECTORY = +#--------------------------------------------------------------------------- +# Configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +RTF_EXTRA_FILES = +#--------------------------------------------------------------------------- +# Configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_SUBDIR = +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# Configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_PROGRAMLISTING = YES +XML_NS_MEMB_FILE_SCOPE = NO +#--------------------------------------------------------------------------- +# Configuration options related to the DOCBOOK output +#--------------------------------------------------------------------------- +GENERATE_DOCBOOK = NO +DOCBOOK_OUTPUT = docbook +#--------------------------------------------------------------------------- +# Configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# Configuration options related to Sqlite3 output +#--------------------------------------------------------------------------- +GENERATE_SQLITE3 = NO +SQLITE3_OUTPUT = sqlite3 +SQLITE3_RECREATE_DB = YES +#--------------------------------------------------------------------------- +# Configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration options related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +EXTERNAL_PAGES = YES +#--------------------------------------------------------------------------- +# Configuration options related to diagram generator tools +#--------------------------------------------------------------------------- +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +DOT_NUM_THREADS = 0 +DOT_COMMON_ATTR = "fontname=Helvetica,fontsize=10" +DOT_EDGE_ATTR = "labelfontname=Helvetica,labelfontsize=10" +DOT_NODE_ATTR = "shape=box,height=0.2,width=0.4" +DOT_FONTPATH = +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +UML_LIMIT_NUM_FIELDS = 10 +UML_MAX_EDGE_LABELS = 10 +DOT_UML_DETAILS = NO +DOT_WRAP_THRESHOLD = 17 +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DIR_GRAPH_MAX_DEPTH = 1 +DOT_IMAGE_FORMAT = png +INTERACTIVE_SVG = NO +DOT_PATH = +DOTFILE_DIRS = +DIA_PATH = +DIAFILE_DIRS = +PLANTUML_JAR_PATH = +PLANTUML_CFG_FILE = +PLANTUML_INCLUDE_PATH = +PLANTUMLFILE_DIRS = +DOT_GRAPH_MAX_NODES = 50 +MAX_DOT_GRAPH_DEPTH = 0 +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +MSCGEN_TOOL = +MSCFILE_DIRS = diff --git a/web/.nojekyll b/web/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/web/annotated.html b/web/annotated.html new file mode 100644 index 0000000..7d909a3 --- /dev/null +++ b/web/annotated.html @@ -0,0 +1,141 @@ + + + + + + + +N-Methods: Class List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 12]
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
 Nnm
 CArithmetic
 CAVL
 CBMA
 CCoordinateCompression
 CFenwick
 CHash
 CInt32_M
 CIntegrator
 CKMP
 CLink
 CModHash
 CMultiSort
 CNode
 CPnC
 CPrimality
 CRandom
 CSearchTree
 CSegmentTree
 CSLE
 CSparse
 CSplay
 CSpline
 CSS
 CTwoSat
 CUnionFind
+
+
+
+ + + + diff --git a/web/annotated_dup.js b/web/annotated_dup.js new file mode 100644 index 0000000..4967208 --- /dev/null +++ b/web/annotated_dup.js @@ -0,0 +1,30 @@ +var annotated_dup = +[ + [ "nm", null, [ + [ "Arithmetic", "classnm_1_1Arithmetic.html", null ], + [ "AVL", "classnm_1_1AVL.html", null ], + [ "BMA", "classnm_1_1BMA.html", null ], + [ "CoordinateCompression", "classnm_1_1CoordinateCompression.html", null ], + [ "Fenwick", "classnm_1_1Fenwick.html", null ], + [ "Hash", "classnm_1_1Hash.html", null ], + [ "Int32_M", "classnm_1_1Int32__M.html", null ], + [ "Integrator", "structnm_1_1Integrator.html", null ], + [ "KMP", "classnm_1_1KMP.html", null ], + [ "Link", "structnm_1_1Link.html", null ], + [ "ModHash", "classnm_1_1ModHash.html", null ], + [ "MultiSort", "classnm_1_1MultiSort.html", null ], + [ "Node", "structnm_1_1Node.html", null ], + [ "PnC", "classnm_1_1PnC.html", null ], + [ "Primality", "classnm_1_1Primality.html", null ], + [ "Random", "classnm_1_1Random.html", null ], + [ "SearchTree", "classnm_1_1SearchTree.html", null ], + [ "SegmentTree", "classnm_1_1SegmentTree.html", null ], + [ "SLE", "classnm_1_1SLE.html", null ], + [ "Sparse", "classnm_1_1Sparse.html", null ], + [ "Splay", "classnm_1_1Splay.html", null ], + [ "Spline", "classnm_1_1Spline.html", null ], + [ "SS", "classnm_1_1SS.html", null ], + [ "TwoSat", "classnm_1_1TwoSat.html", null ], + [ "UnionFind", "classnm_1_1UnionFind.html", null ] + ] ] +]; \ No newline at end of file diff --git a/web/bc_s.png b/web/bc_s.png new file mode 100644 index 0000000..224b29a Binary files /dev/null and b/web/bc_s.png differ diff --git a/web/bc_sd.png b/web/bc_sd.png new file mode 100644 index 0000000..31ca888 Binary files /dev/null and b/web/bc_sd.png differ diff --git a/web/classes.html b/web/classes.html new file mode 100644 index 0000000..25929e2 --- /dev/null +++ b/web/classes.html @@ -0,0 +1,159 @@ + + + + + + + +N-Methods: Class Index + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Index
+
+
+
A | B | C | F | H | I | K | L | M | N | P | R | S | T | U
+
+
+
A
+
Arithmetic (nm)
AVL (nm)
+
+
B
+
BMA (nm)
+
+
C
+
CoordinateCompression (nm)
+
+
F
+
Fenwick (nm)
+
+
H
+
Hash (nm)
+
+
I
+
Int32_M (nm)
Integrator (nm)
+
+
K
+
KMP (nm)
+
+
L
+
Link (nm)
+
+
M
+
ModHash (nm)
MultiSort (nm)
+
+
N
+
Node (nm)
+
+
P
+
PnC (nm)
Primality (nm)
+
+
R
+
Random (nm)
+
+
S
+
SearchTree (nm)
SegmentTree (nm)
SLE (nm)
Sparse (nm)
Splay (nm)
Spline (nm)
SS (nm)
+
+
T
+
TwoSat (nm)
+
+
U
+
UnionFind (nm)
+
+
+
+ + + + diff --git a/web/classnm_1_1AVL-members.html b/web/classnm_1_1AVL-members.html new file mode 100644 index 0000000..375734c --- /dev/null +++ b/web/classnm_1_1AVL-members.html @@ -0,0 +1,140 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nm::AVL< C, T, U > Member List
+
+
+ +

This is the complete list of members for nm::AVL< C, T, U >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
AVL(std::function< bool(T &, T &)> compare=default_compare< T >, std::int16_t balance_factor=0) (defined in nm::AVL< C, T, U >)nm::AVL< C, T, U >
balance(C *n) (defined in nm::AVL< C, T, U >)nm::AVL< C, T, U >protected
compare (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
create(T x) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
element(std::size_t k, C *n) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
element(size_t k) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >
inorder(C *n, std::vector< T > &keys) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
insert(T x, U y) (defined in nm::AVL< C, T, U >)nm::AVL< C, T, U >
insert(T x) (defined in nm::AVL< C, T, U >)nm::AVL< C, T, U >
keys() (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >
node(T x, bool return_parent=false, bool mark=false) const (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
obtain(T x) const (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >
operator[](T x) (defined in nm::AVL< C, T, U >)nm::AVL< C, T, U >
postorder(C *n, std::vector< T > &keys) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
predecessor(C *n, bool return_parent=false) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
preorder(C *n, std::vector< T > &keys) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
remove(T x) (defined in nm::AVL< C, T, U >)nm::AVL< C, T, U >
root (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
rotate_left(C *n) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
rotate_right(C *n) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
search(T x) const (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >
SearchTree(std::function< bool(T &, T &)> compare=default_compare< T >) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >
size() const noexcept (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >
successor(C *n, bool return_parent=false) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
~AVL() (defined in nm::AVL< C, T, U >)nm::AVL< C, T, U >inline
~SearchTree() (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >inline
+
+ + + + diff --git a/web/classnm_1_1AVL.html b/web/classnm_1_1AVL.html new file mode 100644 index 0000000..9e1d11d --- /dev/null +++ b/web/classnm_1_1AVL.html @@ -0,0 +1,226 @@ + + + + + + + +N-Methods: nm::AVL< C, T, U > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
nm::AVL< C, T, U > Class Template Reference
+
+
+
+Inheritance diagram for nm::AVL< C, T, U >:
+
+
+ + +nm::SearchTree< C, T, U > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

AVL (std::function< bool(T &, T &)> compare=default_compare< T >, std::int16_t balance_factor=0)
 
+U insert (T x, U y)
 
+bool insert (T x)
 
+bool remove (T x)
 
+U & operator[] (T x)
 
- Public Member Functions inherited from nm::SearchTree< C, T, U >
SearchTree (std::function< bool(T &, T &)> compare=default_compare< T >)
 
+U insert (T x, U y)
 
+bool insert (T x)
 
+bool remove (T x)
 
+bool search (T x) const
 
+U obtain (T x) const
 
+U & operator[] (T x)
 
+U element (size_t k)
 
+std::vector< T > keys ()
 
+std::size_t size () const noexcept
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+C * balance (C *n)
 
- Protected Member Functions inherited from nm::SearchTree< C, T, U >
+C * create (T x)
 
+C * rotate_left (C *n)
 
+C * rotate_right (C *n)
 
+C * successor (C *n, bool return_parent=false)
 
+C * predecessor (C *n, bool return_parent=false)
 
+C * node (T x, bool return_parent=false, bool mark=false) const
 
+void inorder (C *n, std::vector< T > &keys)
 
+void preorder (C *n, std::vector< T > &keys)
 
+void postorder (C *n, std::vector< T > &keys)
 
+C * element (std::size_t k, C *n)
 
+ + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from nm::SearchTree< C, T, U >
+C * root
 
+std::function< bool(T &, T &)> compare
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/web/classnm_1_1AVL.png b/web/classnm_1_1AVL.png new file mode 100644 index 0000000..7009913 Binary files /dev/null and b/web/classnm_1_1AVL.png differ diff --git a/web/classnm_1_1Arithmetic-members.html b/web/classnm_1_1Arithmetic-members.html new file mode 100644 index 0000000..330b600 --- /dev/null +++ b/web/classnm_1_1Arithmetic-members.html @@ -0,0 +1,123 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nm::Arithmetic< T > Member List
+
+
+ +

This is the complete list of members for nm::Arithmetic< T >, including all inherited members.

+ + + + + + + + + + +
add(T x, T y) (defined in nm::Arithmetic< T >)nm::Arithmetic< T >
Arithmetic(T mod_prime) (defined in nm::Arithmetic< T >)nm::Arithmetic< T >
divide(T x, T y) (defined in nm::Arithmetic< T >)nm::Arithmetic< T >
fix(T x) (defined in nm::Arithmetic< T >)nm::Arithmetic< T >
multiply(T x, T y) (defined in nm::Arithmetic< T >)nm::Arithmetic< T >
raise(T x, T y) (defined in nm::Arithmetic< T >)nm::Arithmetic< T >
subtract(T x, T y) (defined in nm::Arithmetic< T >)nm::Arithmetic< T >
underflow(T x) (defined in nm::Arithmetic< T >)nm::Arithmetic< T >
~Arithmetic() (defined in nm::Arithmetic< T >)nm::Arithmetic< T >inline
+
+ + + + diff --git a/web/classnm_1_1Arithmetic.html b/web/classnm_1_1Arithmetic.html new file mode 100644 index 0000000..e400d71 --- /dev/null +++ b/web/classnm_1_1Arithmetic.html @@ -0,0 +1,156 @@ + + + + + + + +N-Methods: nm::Arithmetic< T > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
nm::Arithmetic< T > Class Template Reference
+
+
+
+Inheritance diagram for nm::Arithmetic< T >:
+
+
+ + +nm::PnC< T > + +
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

Arithmetic (T mod_prime)
 
+T underflow (T x)
 
+T fix (T x)
 
+T add (T x, T y)
 
+T subtract (T x, T y)
 
+T multiply (T x, T y)
 
+T raise (T x, T y)
 
+T divide (T x, T y)
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/web/classnm_1_1Arithmetic.png b/web/classnm_1_1Arithmetic.png new file mode 100644 index 0000000..157f8bc Binary files /dev/null and b/web/classnm_1_1Arithmetic.png differ diff --git a/web/classnm_1_1BMA-members.html b/web/classnm_1_1BMA-members.html new file mode 100644 index 0000000..1b20c07 --- /dev/null +++ b/web/classnm_1_1BMA-members.html @@ -0,0 +1,132 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nm::BMA Member List
+
+
+ +

This is the complete list of members for nm::BMA, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
BMA(std::string word, bool case_sensitive=true, std::size_t memory=SIZE_LIMIT_MEM) (defined in nm::BMA)nm::BMA
case_sensitive (defined in nm::SS)nm::SSprotected
clear() (defined in nm::BMA)nm::BMA
compare(char x, char y) (defined in nm::SS)nm::SSprotected
critical_memory (defined in nm::SS)nm::SSprotected
delta_function() (defined in nm::BMA)nm::BMAprotected
flush() (defined in nm::SS)nm::SS
i (defined in nm::SS)nm::SSprotected
memory(bool all=false) (defined in nm::BMA)nm::BMAprotected
n (defined in nm::SS)nm::SSprotected
s (defined in nm::SS)nm::SSprotected
search() (defined in nm::BMA)nm::BMA
SS(std::string word, bool case_sensitive=true, std::size_t memory=SIZE_LIMIT_MEM) (defined in nm::SS)nm::SS
stream(char c) (defined in nm::SS)nm::SS
stream(std::string s) (defined in nm::SS)nm::SS
w (defined in nm::SS)nm::SSprotected
~BMA() (defined in nm::BMA)nm::BMAinline
~SS() (defined in nm::SS)nm::SSinline
+
+ + + + diff --git a/web/classnm_1_1BMA.html b/web/classnm_1_1BMA.html new file mode 100644 index 0000000..e1389fc --- /dev/null +++ b/web/classnm_1_1BMA.html @@ -0,0 +1,193 @@ + + + + + + + +N-Methods: nm::BMA Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
nm::BMA Class Reference
+
+
+
+Inheritance diagram for nm::BMA:
+
+
+ + +nm::SS + +
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

BMA (std::string word, bool case_sensitive=true, std::size_t memory=SIZE_LIMIT_MEM)
 
+void clear ()
 
+std::vector< std::uint32_t > search ()
 
- Public Member Functions inherited from nm::SS
SS (std::string word, bool case_sensitive=true, std::size_t memory=SIZE_LIMIT_MEM)
 
+void clear ()
 
+void flush ()
 
+void stream (char c)
 
+void stream (std::string s)
 
+ + + + + + + + +

+Protected Member Functions

+void delta_function ()
 
+std::size_t memory (bool all=false)
 
- Protected Member Functions inherited from nm::SS
+bool compare (char x, char y)
 
+ + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from nm::SS
+bool case_sensitive
 
+std::size_t critical_memory
 
+std::string w
 
+std::string s
 
+std::size_t n
 
+std::int32_t i
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/web/classnm_1_1BMA.png b/web/classnm_1_1BMA.png new file mode 100644 index 0000000..afd7ba3 Binary files /dev/null and b/web/classnm_1_1BMA.png differ diff --git a/web/classnm_1_1CoordinateCompression-members.html b/web/classnm_1_1CoordinateCompression-members.html new file mode 100644 index 0000000..f55e491 --- /dev/null +++ b/web/classnm_1_1CoordinateCompression-members.html @@ -0,0 +1,118 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nm::CoordinateCompression< T > Member List
+
+
+ +

This is the complete list of members for nm::CoordinateCompression< T >, including all inherited members.

+ + + + + +
coordinate(T x) (defined in nm::CoordinateCompression< T >)nm::CoordinateCompression< T >
CoordinateCompression(std::vector< T > data) (defined in nm::CoordinateCompression< T >)nm::CoordinateCompression< T >
element(std::size_t i) (defined in nm::CoordinateCompression< T >)nm::CoordinateCompression< T >
~CoordinateCompression() (defined in nm::CoordinateCompression< T >)nm::CoordinateCompression< T >inline
+
+ + + + diff --git a/web/classnm_1_1CoordinateCompression.html b/web/classnm_1_1CoordinateCompression.html new file mode 100644 index 0000000..f7f6ee8 --- /dev/null +++ b/web/classnm_1_1CoordinateCompression.html @@ -0,0 +1,132 @@ + + + + + + + +N-Methods: nm::CoordinateCompression< T > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
nm::CoordinateCompression< T > Class Template Reference
+
+
+ + + + + + + + +

+Public Member Functions

CoordinateCompression (std::vector< T > data)
 
+std::int32_t coordinate (T x)
 
+T element (std::size_t i)
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/web/classnm_1_1Fenwick-members.html b/web/classnm_1_1Fenwick-members.html new file mode 100644 index 0000000..a524865 --- /dev/null +++ b/web/classnm_1_1Fenwick-members.html @@ -0,0 +1,120 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nm::Fenwick< T > Member List
+
+
+ +

This is the complete list of members for nm::Fenwick< T >, including all inherited members.

+ + + + + + + +
Fenwick(const std::size_t size, const std::function< T(T, T)> &operation) (defined in nm::Fenwick< T >)nm::Fenwick< T >
Fenwick(const std::vector< T > &data, const std::function< T(T, T)> &operation) (defined in nm::Fenwick< T >)nm::Fenwick< T >
query(std::int32_t i) (defined in nm::Fenwick< T >)nm::Fenwick< T >
query(std::int32_t l, std::int32_t r) (defined in nm::Fenwick< T >)nm::Fenwick< T >
update(std::int32_t i, T data) (defined in nm::Fenwick< T >)nm::Fenwick< T >
~Fenwick() (defined in nm::Fenwick< T >)nm::Fenwick< T >inline
+
+ + + + diff --git a/web/classnm_1_1Fenwick.html b/web/classnm_1_1Fenwick.html new file mode 100644 index 0000000..30786e2 --- /dev/null +++ b/web/classnm_1_1Fenwick.html @@ -0,0 +1,138 @@ + + + + + + + +N-Methods: nm::Fenwick< T > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
nm::Fenwick< T > Class Template Reference
+
+
+ + + + + + + + + + + + +

+Public Member Functions

Fenwick (const std::size_t size, const std::function< T(T, T)> &operation)
 
Fenwick (const std::vector< T > &data, const std::function< T(T, T)> &operation)
 
+T query (std::int32_t i)
 
+T query (std::int32_t l, std::int32_t r)
 
+void update (std::int32_t i, T data)
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/web/classnm_1_1Hash-members.html b/web/classnm_1_1Hash-members.html new file mode 100644 index 0000000..1ed3c80 --- /dev/null +++ b/web/classnm_1_1Hash-members.html @@ -0,0 +1,117 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nm::Hash< M, P > Member List
+
+
+ +

This is the complete list of members for nm::Hash< M, P >, including all inherited members.

+ + + + +
Hash(std::string &s) (defined in nm::Hash< M, P >)nm::Hash< M, P >
Interval(std::size_t left, std::size_t right) (defined in nm::Hash< M, P >)nm::Hash< M, P >
~Hash() (defined in nm::Hash< M, P >)nm::Hash< M, P >inline
+
+ + + + diff --git a/web/classnm_1_1Hash.html b/web/classnm_1_1Hash.html new file mode 100644 index 0000000..9646663 --- /dev/null +++ b/web/classnm_1_1Hash.html @@ -0,0 +1,163 @@ + + + + + + + +N-Methods: nm::Hash< M, P > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
nm::Hash< M, P > Class Template Reference
+
+
+
+Inheritance diagram for nm::Hash< M, P >:
+
+
+ + +nm::Arithmetic< std::int64_t > + +
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Hash (std::string &s)
 
+std::int64_t Interval (std::size_t left, std::size_t right)
 
- Public Member Functions inherited from nm::Arithmetic< std::int64_t >
Arithmetic (std::int64_t mod_prime)
 
+std::int64_t underflow (std::int64_t x)
 
+std::int64_t fix (std::int64_t x)
 
+std::int64_t add (std::int64_t x, std::int64_t y)
 
+std::int64_t subtract (std::int64_t x, std::int64_t y)
 
+std::int64_t multiply (std::int64_t x, std::int64_t y)
 
+std::int64_t raise (std::int64_t x, std::int64_t y)
 
+std::int64_t divide (std::int64_t x, std::int64_t y)
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/web/classnm_1_1Hash.png b/web/classnm_1_1Hash.png new file mode 100644 index 0000000..166c978 Binary files /dev/null and b/web/classnm_1_1Hash.png differ diff --git a/web/classnm_1_1Int32__M-members.html b/web/classnm_1_1Int32__M-members.html new file mode 100644 index 0000000..ab68f02 --- /dev/null +++ b/web/classnm_1_1Int32__M-members.html @@ -0,0 +1,141 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nm::Int32_M< M > Member List
+
+
+ +

This is the complete list of members for nm::Int32_M< M >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
get_value() const noexcept (defined in nm::Int32_M< M >)nm::Int32_M< M >inline
Int32_M() (defined in nm::Int32_M< M >)nm::Int32_M< M >inline
Int32_M(T x) (defined in nm::Int32_M< M >)nm::Int32_M< M >inline
Int32_M(const Int32_M< M > &x) (defined in nm::Int32_M< M >)nm::Int32_M< M >inline
inverse() const (defined in nm::Int32_M< M >)nm::Int32_M< M >
modulus (defined in nm::Int32_M< M >)nm::Int32_M< M >static
operator int() const noexcept (defined in nm::Int32_M< M >)nm::Int32_M< M >inlinevirtual
operator* (defined in nm::Int32_M< M >)nm::Int32_M< M >friend
operator*=(const Int32_M< M > &x) (defined in nm::Int32_M< M >)nm::Int32_M< M >
operator+ (defined in nm::Int32_M< M >)nm::Int32_M< M >friend
operator++() (defined in nm::Int32_M< M >)nm::Int32_M< M >
operator++(int) (defined in nm::Int32_M< M >)nm::Int32_M< M >
operator+=(const Int32_M< M > &x) (defined in nm::Int32_M< M >)nm::Int32_M< M >
operator- (defined in nm::Int32_M< M >)nm::Int32_M< M >friend
operator--() (defined in nm::Int32_M< M >)nm::Int32_M< M >
operator--(int) (defined in nm::Int32_M< M >)nm::Int32_M< M >
operator-=(const Int32_M< M > &x) (defined in nm::Int32_M< M >)nm::Int32_M< M >
operator/ (defined in nm::Int32_M< M >)nm::Int32_M< M >friend
operator/=(const Int32_M< M > &x) (defined in nm::Int32_M< M >)nm::Int32_M< M >
operator<=>(const Int32_M< M > &x) const noexcept (defined in nm::Int32_M< M >)nm::Int32_M< M >
operator<=>(const T &x) const noexcept (defined in nm::Int32_M< M >)nm::Int32_M< M >
operator<=> (defined in nm::Int32_M< M >)nm::Int32_M< M >friend
operator=(const T &x) (defined in nm::Int32_M< M >)nm::Int32_M< M >
operator=(const Int32_M< M > &x) (defined in nm::Int32_M< M >)nm::Int32_M< M >
raise (defined in nm::Int32_M< M >)nm::Int32_M< M >friend
value (defined in nm::Int32_M< M >)nm::Int32_M< M >protected
~Int32_M() (defined in nm::Int32_M< M >)nm::Int32_M< M >inline
+
+ + + + diff --git a/web/classnm_1_1Int32__M.html b/web/classnm_1_1Int32__M.html new file mode 100644 index 0000000..4c21348 --- /dev/null +++ b/web/classnm_1_1Int32__M.html @@ -0,0 +1,219 @@ + + + + + + + +N-Methods: nm::Int32_M< M > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
nm::Int32_M< M > Class Template Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+virtual constexpr operator int () const noexcept
 
+template<typename T >
constexpr Int32_M (T x)
 
+constexpr Int32_M (const Int32_M< M > &x)
 
+int64_t get_value () const noexcept
 
+Int32_M< M > inverse () const
 
+template<typename T >
Int32_M< M > & operator= (const T &x)
 
+Int32_M< M > & operator= (const Int32_M< M > &x)
 
+Int32_M< M > & operator+= (const Int32_M< M > &x)
 
+Int32_M< M > & operator-= (const Int32_M< M > &x)
 
+Int32_M< M > & operator*= (const Int32_M< M > &x)
 
+Int32_M< M > & operator/= (const Int32_M< M > &x)
 
+Int32_M< M > & operator++ ()
 
+Int32_M< M > & operator-- ()
 
+Int32_M< M > operator++ (int)
 
+Int32_M< M > operator-- (int)
 
+std::strong_ordering operator<=> (const Int32_M< M > &x) const noexcept
 
+template<typename T >
std::strong_ordering operator<=> (const T &x) const noexcept
 
+ + + +

+Static Public Attributes

+static const std::size_t modulus = M
 
+ + + +

+Protected Attributes

+std::int64_t value
 
+ + + + + + + + + + + + + + + + + + + +

+Friends

+template<std::uint64_t T>
std::strong_ordering operator<=> (const Int32_M< T > &x, const Int32_M< T > &y) noexcept
 
+template<std::uint64_t T, typename U >
Int32_M< T > raise (const Int32_M< T > &x, const U &y)
 
+template<std::uint64_t T, typename U >
Int32_M< T > operator+ (const Int32_M< T > &x, const U &y)
 
+template<std::uint64_t T, typename U >
Int32_M< T > operator- (const Int32_M< T > &x, const U &y)
 
+template<std::uint64_t T, typename U >
Int32_M< T > operator* (const Int32_M< T > &x, const U &y)
 
+template<std::uint64_t T, typename U >
Int32_M< T > operator/ (const Int32_M< T > &x, const U &y)
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/web/classnm_1_1KMP-members.html b/web/classnm_1_1KMP-members.html new file mode 100644 index 0000000..e453fed --- /dev/null +++ b/web/classnm_1_1KMP-members.html @@ -0,0 +1,133 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nm::KMP Member List
+
+
+ +

This is the complete list of members for nm::KMP, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
case_sensitive (defined in nm::SS)nm::SSprotected
clear() (defined in nm::KMP)nm::KMP
compare(char x, char y) (defined in nm::SS)nm::SSprotected
critical_memory (defined in nm::SS)nm::SSprotected
failure_function() (defined in nm::KMP)nm::KMPprotected
flush() (defined in nm::SS)nm::SS
i (defined in nm::SS)nm::SSprotected
KMP(std::string word, bool case_sensitive=true, std::size_t memory=SIZE_LIMIT_MEM) (defined in nm::KMP)nm::KMP
memory(bool all=false) (defined in nm::KMP)nm::KMPprotected
n (defined in nm::SS)nm::SSprotected
prefix_function() (defined in nm::KMP)nm::KMPprotected
s (defined in nm::SS)nm::SSprotected
search() (defined in nm::KMP)nm::KMP
SS(std::string word, bool case_sensitive=true, std::size_t memory=SIZE_LIMIT_MEM) (defined in nm::SS)nm::SS
stream(char c) (defined in nm::SS)nm::SS
stream(std::string s) (defined in nm::SS)nm::SS
w (defined in nm::SS)nm::SSprotected
~KMP() (defined in nm::KMP)nm::KMPinline
~SS() (defined in nm::SS)nm::SSinline
+
+ + + + diff --git a/web/classnm_1_1KMP.html b/web/classnm_1_1KMP.html new file mode 100644 index 0000000..fe3994b --- /dev/null +++ b/web/classnm_1_1KMP.html @@ -0,0 +1,196 @@ + + + + + + + +N-Methods: nm::KMP Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
nm::KMP Class Reference
+
+
+
+Inheritance diagram for nm::KMP:
+
+
+ + +nm::SS + +
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

KMP (std::string word, bool case_sensitive=true, std::size_t memory=SIZE_LIMIT_MEM)
 
+void clear ()
 
+std::vector< std::int32_t > search ()
 
- Public Member Functions inherited from nm::SS
SS (std::string word, bool case_sensitive=true, std::size_t memory=SIZE_LIMIT_MEM)
 
+void clear ()
 
+void flush ()
 
+void stream (char c)
 
+void stream (std::string s)
 
+ + + + + + + + + + +

+Protected Member Functions

+std::size_t memory (bool all=false)
 
+void prefix_function ()
 
+void failure_function ()
 
- Protected Member Functions inherited from nm::SS
+bool compare (char x, char y)
 
+ + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from nm::SS
+bool case_sensitive
 
+std::size_t critical_memory
 
+std::string w
 
+std::string s
 
+std::size_t n
 
+std::int32_t i
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/web/classnm_1_1KMP.png b/web/classnm_1_1KMP.png new file mode 100644 index 0000000..dedfee3 Binary files /dev/null and b/web/classnm_1_1KMP.png differ diff --git a/web/classnm_1_1ModHash-members.html b/web/classnm_1_1ModHash-members.html new file mode 100644 index 0000000..41f4cd9 --- /dev/null +++ b/web/classnm_1_1ModHash-members.html @@ -0,0 +1,120 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nm::ModHash< M, P > Member List
+
+
+ +

This is the complete list of members for nm::ModHash< M, P >, including all inherited members.

+ + + + + + + +
clear() (defined in nm::ModHash< M, P >)nm::ModHash< M, P >
Interval(std::size_t left, std::size_t right) (defined in nm::ModHash< M, P >)nm::ModHash< M, P >
ModHash() (defined in nm::ModHash< M, P >)nm::ModHash< M, P >
stream(char c) (defined in nm::ModHash< M, P >)nm::ModHash< M, P >
stream(std::string &s) (defined in nm::ModHash< M, P >)nm::ModHash< M, P >
~ModHash() (defined in nm::ModHash< M, P >)nm::ModHash< M, P >inline
+
+ + + + diff --git a/web/classnm_1_1ModHash.html b/web/classnm_1_1ModHash.html new file mode 100644 index 0000000..bd23979 --- /dev/null +++ b/web/classnm_1_1ModHash.html @@ -0,0 +1,135 @@ + + + + + + + +N-Methods: nm::ModHash< M, P > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
nm::ModHash< M, P > Class Template Reference
+
+
+ + + + + + + + + + +

+Public Member Functions

+void clear ()
 
+void stream (char c)
 
+void stream (std::string &s)
 
+std::int64_t Interval (std::size_t left, std::size_t right)
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/web/classnm_1_1MultiSort-members.html b/web/classnm_1_1MultiSort-members.html new file mode 100644 index 0000000..30cb86e --- /dev/null +++ b/web/classnm_1_1MultiSort-members.html @@ -0,0 +1,118 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nm::MultiSort< T, U > Member List
+
+
+ +

This is the complete list of members for nm::MultiSort< T, U >, including all inherited members.

+ + + + + +
apply(std::vector< T > &list) (defined in nm::MultiSort< T, U >)nm::MultiSort< T, U >
MultiSort(U n) (defined in nm::MultiSort< T, U >)nm::MultiSort< T, U >
sort(std::vector< T > &list, std::function< bool(T &, T &)> compare=default_compare< T >) (defined in nm::MultiSort< T, U >)nm::MultiSort< T, U >
~MultiSort() (defined in nm::MultiSort< T, U >)nm::MultiSort< T, U >inline
+
+ + + + diff --git a/web/classnm_1_1MultiSort.html b/web/classnm_1_1MultiSort.html new file mode 100644 index 0000000..f4339f4 --- /dev/null +++ b/web/classnm_1_1MultiSort.html @@ -0,0 +1,132 @@ + + + + + + + +N-Methods: nm::MultiSort< T, U > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
nm::MultiSort< T, U > Class Template Reference
+
+
+ + + + + + + + +

+Public Member Functions

MultiSort (U n)
 
+U sort (std::vector< T > &list, std::function< bool(T &, T &)> compare=default_compare< T >)
 
+void apply (std::vector< T > &list)
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/web/classnm_1_1PnC-members.html b/web/classnm_1_1PnC-members.html new file mode 100644 index 0000000..b99ada3 --- /dev/null +++ b/web/classnm_1_1PnC-members.html @@ -0,0 +1,129 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nm::PnC< T > Member List
+
+
+ +

This is the complete list of members for nm::PnC< T >, including all inherited members.

+ + + + + + + + + + + + + + + + +
add(T x, T y) (defined in nm::Arithmetic< T >)nm::Arithmetic< T >
Arithmetic(T mod_prime) (defined in nm::Arithmetic< T >)nm::Arithmetic< T >
divide(T x, T y) (defined in nm::Arithmetic< T >)nm::Arithmetic< T >
fix(T x) (defined in nm::Arithmetic< T >)nm::Arithmetic< T >
get_factorial(std::int32_t n) (defined in nm::PnC< T >)nm::PnC< T >
get_factorial_inverse(std::int32_t n) (defined in nm::PnC< T >)nm::PnC< T >
multiply(T x, T y) (defined in nm::Arithmetic< T >)nm::Arithmetic< T >
nCr(std::int32_t n, std::int32_t r) (defined in nm::PnC< T >)nm::PnC< T >
nPr(std::int32_t n, std::int32_t r) (defined in nm::PnC< T >)nm::PnC< T >
PnC(std::int32_t n, const T mod_prime) (defined in nm::PnC< T >)nm::PnC< T >
raise(T x, T y) (defined in nm::Arithmetic< T >)nm::Arithmetic< T >
subtract(T x, T y) (defined in nm::Arithmetic< T >)nm::Arithmetic< T >
underflow(T x) (defined in nm::Arithmetic< T >)nm::Arithmetic< T >
~Arithmetic() (defined in nm::Arithmetic< T >)nm::Arithmetic< T >inline
~PnC() (defined in nm::PnC< T >)nm::PnC< T >inline
+
+ + + + diff --git a/web/classnm_1_1PnC.html b/web/classnm_1_1PnC.html new file mode 100644 index 0000000..7110164 --- /dev/null +++ b/web/classnm_1_1PnC.html @@ -0,0 +1,172 @@ + + + + + + + +N-Methods: nm::PnC< T > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
nm::PnC< T > Class Template Reference
+
+
+
+Inheritance diagram for nm::PnC< T >:
+
+
+ + +nm::Arithmetic< T > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

PnC (std::int32_t n, const T mod_prime)
 
+T get_factorial (std::int32_t n)
 
+T get_factorial_inverse (std::int32_t n)
 
+T nPr (std::int32_t n, std::int32_t r)
 
+T nCr (std::int32_t n, std::int32_t r)
 
- Public Member Functions inherited from nm::Arithmetic< T >
Arithmetic (T mod_prime)
 
+T underflow (T x)
 
+T fix (T x)
 
+T add (T x, T y)
 
+T subtract (T x, T y)
 
+T multiply (T x, T y)
 
+T raise (T x, T y)
 
+T divide (T x, T y)
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/web/classnm_1_1PnC.png b/web/classnm_1_1PnC.png new file mode 100644 index 0000000..e9ab450 Binary files /dev/null and b/web/classnm_1_1PnC.png differ diff --git a/web/classnm_1_1Primality-members.html b/web/classnm_1_1Primality-members.html new file mode 100644 index 0000000..d63b266 --- /dev/null +++ b/web/classnm_1_1Primality-members.html @@ -0,0 +1,121 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nm::Primality Member List
+
+
+ +

This is the complete list of members for nm::Primality, including all inherited members.

+ + + + + + + + +
agarwal_kayal_saxena(std::uint64_t number) (defined in nm::Primality)nm::Primality
fermat(std::uint64_t number) (defined in nm::Primality)nm::Primality
miller_rabin(std::uint32_t number) (defined in nm::Primality)nm::Primality
Primality(std::uint32_t iterations=SMALLEST_HAPPY) (defined in nm::Primality)nm::Primality
solovay_strassen(std::uint32_t number) (defined in nm::Primality)nm::Primality
trivial(std::uint32_t number) (defined in nm::Primality)nm::Primalityprotected
~Primality() (defined in nm::Primality)nm::Primalityinline
+
+ + + + diff --git a/web/classnm_1_1Primality.html b/web/classnm_1_1Primality.html new file mode 100644 index 0000000..b2680fe --- /dev/null +++ b/web/classnm_1_1Primality.html @@ -0,0 +1,145 @@ + + + + + + + +N-Methods: nm::Primality Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
nm::Primality Class Reference
+
+
+ + + + + + + + + + + + +

+Public Member Functions

Primality (std::uint32_t iterations=SMALLEST_HAPPY)
 
+bool fermat (std::uint64_t number)
 
+bool miller_rabin (std::uint32_t number)
 
+bool solovay_strassen (std::uint32_t number)
 
+bool agarwal_kayal_saxena (std::uint64_t number)
 
+ + + +

+Protected Member Functions

+std::uint32_t trivial (std::uint32_t number)
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/web/classnm_1_1Random-members.html b/web/classnm_1_1Random-members.html new file mode 100644 index 0000000..b950be9 --- /dev/null +++ b/web/classnm_1_1Random-members.html @@ -0,0 +1,120 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nm::Random Member List
+
+
+ +

This is the complete list of members for nm::Random, including all inherited members.

+ + + + + + + +
number(std::uint32_t xr) (defined in nm::Random)nm::Random
number(std::uint32_t xl, std::uint32_t xr) (defined in nm::Random)nm::Random
query_clock() (defined in nm::Random)nm::Randomprotected
Random() (defined in nm::Random)nm::Random
Random(std::uint32_t s, std::uint32_t p=0U) (defined in nm::Random)nm::Random
~Random() (defined in nm::Random)nm::Randominline
+
+ + + + diff --git a/web/classnm_1_1Random.html b/web/classnm_1_1Random.html new file mode 100644 index 0000000..d58b8ce --- /dev/null +++ b/web/classnm_1_1Random.html @@ -0,0 +1,139 @@ + + + + + + + +N-Methods: nm::Random Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
nm::Random Class Reference
+
+
+ + + + + + + + +

+Public Member Functions

Random (std::uint32_t s, std::uint32_t p=0U)
 
+std::uint32_t number (std::uint32_t xr)
 
+std::uint32_t number (std::uint32_t xl, std::uint32_t xr)
 
+ + + +

+Protected Member Functions

+uint64_t query_clock ()
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/web/classnm_1_1SLE-members.html b/web/classnm_1_1SLE-members.html new file mode 100644 index 0000000..6ca3038 --- /dev/null +++ b/web/classnm_1_1SLE-members.html @@ -0,0 +1,132 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nm::SLE Member List
+
+
+ +

This is the complete list of members for nm::SLE, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
add_row(std::vector< long double > row) (defined in nm::SLE)nm::SLE
cholesky() (defined in nm::SLE)nm::SLEprotected
cramer() (defined in nm::SLE)nm::SLEprotected
determinant() (defined in nm::SLE)nm::SLE
eigenvalues() (defined in nm::SLE)nm::SLE
fourier() (defined in nm::SLE)nm::SLEprotected
inverse() (defined in nm::SLE)nm::SLE
lu() (defined in nm::SLE)nm::SLEprotected
normalize() (defined in nm::SLE)nm::SLEprotected
pivot(std::size_t column, std::size_t row=0, long double threshold=PRECISION) (defined in nm::SLE)nm::SLEprotected
qr() (defined in nm::SLE)nm::SLEprotected
rank() (defined in nm::SLE)nm::SLE
singular_value() (defined in nm::SLE)nm::SLEprotected
SLE() (defined in nm::SLE)nm::SLEinline
SLE(std::vector< std::vector< long double > > matrix) (defined in nm::SLE)nm::SLE
SLE(std::size_t nr, std::size_t nc) (defined in nm::SLE)nm::SLE
solve(std::vector< long double > &x, long double threshold=PRECISION, solver use=solver::gauss) (defined in nm::SLE)nm::SLE
~SLE() (defined in nm::SLE)nm::SLEinline
+
+ + + + diff --git a/web/classnm_1_1SLE.html b/web/classnm_1_1SLE.html new file mode 100644 index 0000000..b43c379 --- /dev/null +++ b/web/classnm_1_1SLE.html @@ -0,0 +1,175 @@ + + + + + + + +N-Methods: nm::SLE Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
nm::SLE Class Reference
+
+
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

SLE (std::vector< std::vector< long double > > matrix)
 
SLE (std::size_t nr, std::size_t nc)
 
+void add_row (std::vector< long double > row)
 
+classification solve (std::vector< long double > &x, long double threshold=PRECISION, solver use=solver::gauss)
 
+std::size_t rank ()
 
+std::vector< long double > eigenvalues ()
 
+long double determinant ()
 
+SLE inverse ()
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

+void normalize ()
 
+std::uint32_t pivot (std::size_t column, std::size_t row=0, long double threshold=PRECISION)
 
+void cramer ()
 
+void fourier ()
 
+void singular_value ()
 
+void lu ()
 
+void qr ()
 
+void cholesky ()
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/web/classnm_1_1SS-members.html b/web/classnm_1_1SS-members.html new file mode 100644 index 0000000..05a454f --- /dev/null +++ b/web/classnm_1_1SS-members.html @@ -0,0 +1,127 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nm::SS Member List
+
+
+ +

This is the complete list of members for nm::SS, including all inherited members.

+ + + + + + + + + + + + + + +
case_sensitive (defined in nm::SS)nm::SSprotected
clear() (defined in nm::SS)nm::SS
compare(char x, char y) (defined in nm::SS)nm::SSprotected
critical_memory (defined in nm::SS)nm::SSprotected
flush() (defined in nm::SS)nm::SS
i (defined in nm::SS)nm::SSprotected
n (defined in nm::SS)nm::SSprotected
s (defined in nm::SS)nm::SSprotected
SS(std::string word, bool case_sensitive=true, std::size_t memory=SIZE_LIMIT_MEM) (defined in nm::SS)nm::SS
stream(char c) (defined in nm::SS)nm::SS
stream(std::string s) (defined in nm::SS)nm::SS
w (defined in nm::SS)nm::SSprotected
~SS() (defined in nm::SS)nm::SSinline
+
+ + + + diff --git a/web/classnm_1_1SS.html b/web/classnm_1_1SS.html new file mode 100644 index 0000000..754f043 --- /dev/null +++ b/web/classnm_1_1SS.html @@ -0,0 +1,177 @@ + + + + + + + +N-Methods: nm::SS Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
nm::SS Class Reference
+
+
+
+Inheritance diagram for nm::SS:
+
+
+ + +nm::BMA +nm::KMP + +
+ + + + + + + + + + + + +

+Public Member Functions

SS (std::string word, bool case_sensitive=true, std::size_t memory=SIZE_LIMIT_MEM)
 
+void clear ()
 
+void flush ()
 
+void stream (char c)
 
+void stream (std::string s)
 
+ + + +

+Protected Member Functions

+bool compare (char x, char y)
 
+ + + + + + + + + + + + + +

+Protected Attributes

+bool case_sensitive
 
+std::size_t critical_memory
 
+std::string w
 
+std::string s
 
+std::size_t n
 
+std::int32_t i
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/web/classnm_1_1SS.png b/web/classnm_1_1SS.png new file mode 100644 index 0000000..fd57c66 Binary files /dev/null and b/web/classnm_1_1SS.png differ diff --git a/web/classnm_1_1SearchTree-members.html b/web/classnm_1_1SearchTree-members.html new file mode 100644 index 0000000..5edac6a --- /dev/null +++ b/web/classnm_1_1SearchTree-members.html @@ -0,0 +1,137 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nm::SearchTree< C, T, U > Member List
+
+
+ +

This is the complete list of members for nm::SearchTree< C, T, U >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
compare (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
create(T x) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
element(std::size_t k, C *n) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
element(size_t k) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >
inorder(C *n, std::vector< T > &keys) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
insert(T x, U y) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >
insert(T x) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >
keys() (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >
node(T x, bool return_parent=false, bool mark=false) const (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
obtain(T x) const (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >
operator[](T x) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >
postorder(C *n, std::vector< T > &keys) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
predecessor(C *n, bool return_parent=false) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
preorder(C *n, std::vector< T > &keys) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
remove(T x) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >
root (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
rotate_left(C *n) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
rotate_right(C *n) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
search(T x) const (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >
SearchTree(std::function< bool(T &, T &)> compare=default_compare< T >) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >
size() const noexcept (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >
successor(C *n, bool return_parent=false) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
~SearchTree() (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >inline
+
+ + + + diff --git a/web/classnm_1_1SearchTree.html b/web/classnm_1_1SearchTree.html new file mode 100644 index 0000000..b41c53d --- /dev/null +++ b/web/classnm_1_1SearchTree.html @@ -0,0 +1,207 @@ + + + + + + + +N-Methods: nm::SearchTree< C, T, U > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
nm::SearchTree< C, T, U > Class Template Reference
+
+
+
+Inheritance diagram for nm::SearchTree< C, T, U >:
+
+
+ + +nm::AVL< C, T, U > +nm::Splay< C, T, U > + +
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SearchTree (std::function< bool(T &, T &)> compare=default_compare< T >)
 
+U insert (T x, U y)
 
+bool insert (T x)
 
+bool remove (T x)
 
+bool search (T x) const
 
+U obtain (T x) const
 
+U & operator[] (T x)
 
+U element (size_t k)
 
+std::vector< T > keys ()
 
+std::size_t size () const noexcept
 
+ + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+C * create (T x)
 
+C * rotate_left (C *n)
 
+C * rotate_right (C *n)
 
+C * successor (C *n, bool return_parent=false)
 
+C * predecessor (C *n, bool return_parent=false)
 
+C * node (T x, bool return_parent=false, bool mark=false) const
 
+void inorder (C *n, std::vector< T > &keys)
 
+void preorder (C *n, std::vector< T > &keys)
 
+void postorder (C *n, std::vector< T > &keys)
 
+C * element (std::size_t k, C *n)
 
+ + + + + +

+Protected Attributes

+C * root
 
+std::function< bool(T &, T &)> compare
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/web/classnm_1_1SearchTree.png b/web/classnm_1_1SearchTree.png new file mode 100644 index 0000000..b2e1ecd Binary files /dev/null and b/web/classnm_1_1SearchTree.png differ diff --git a/web/classnm_1_1SegmentTree-members.html b/web/classnm_1_1SegmentTree-members.html new file mode 100644 index 0000000..b11bac0 --- /dev/null +++ b/web/classnm_1_1SegmentTree-members.html @@ -0,0 +1,124 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nm::SegmentTree< T, U > Member List
+
+
+ +

This is the complete list of members for nm::SegmentTree< T, U >, including all inherited members.

+ + + + + + + + + + + +
construct(std::vector< T > &data, std::int32_t lo, std::int32_t hi, std::int32_t i) (defined in nm::SegmentTree< T, U >)nm::SegmentTree< T, U >protected
propagate(std::int32_t i) (defined in nm::SegmentTree< T, U >)nm::SegmentTree< T, U >protected
query(std::int32_t left, std::int32_t right) (defined in nm::SegmentTree< T, U >)nm::SegmentTree< T, U >
query_tree(std::int32_t lo, std::int32_t hi, std::int32_t tlo, std::int32_t thi, std::int32_t i) (defined in nm::SegmentTree< T, U >)nm::SegmentTree< T, U >protected
SegmentTree(std::vector< T > &data, U *integrator_struct=new U()) (defined in nm::SegmentTree< T, U >)nm::SegmentTree< T, U >
update(T value, std::int32_t position) (defined in nm::SegmentTree< T, U >)nm::SegmentTree< T, U >
update(T value, std::int32_t left, std::int32_t right) (defined in nm::SegmentTree< T, U >)nm::SegmentTree< T, U >
update_tree(T value, std::int32_t position, std::int32_t lo, std::int32_t hi, std::int32_t i) (defined in nm::SegmentTree< T, U >)nm::SegmentTree< T, U >protected
update_tree(T value, std::int32_t lo, std::int32_t hi, std::int32_t tlo, std::int32_t thi, std::int32_t i) (defined in nm::SegmentTree< T, U >)nm::SegmentTree< T, U >protected
~SegmentTree() (defined in nm::SegmentTree< T, U >)nm::SegmentTree< T, U >inline
+
+ + + + diff --git a/web/classnm_1_1SegmentTree.html b/web/classnm_1_1SegmentTree.html new file mode 100644 index 0000000..f425919 --- /dev/null +++ b/web/classnm_1_1SegmentTree.html @@ -0,0 +1,154 @@ + + + + + + + +N-Methods: nm::SegmentTree< T, U > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
nm::SegmentTree< T, U > Class Template Reference
+
+
+ + + + + + + + + + +

+Public Member Functions

SegmentTree (std::vector< T > &data, U *integrator_struct=new U())
 
+T query (std::int32_t left, std::int32_t right)
 
+T update (T value, std::int32_t position)
 
+T update (T value, std::int32_t left, std::int32_t right)
 
+ + + + + + + + + + + +

+Protected Member Functions

+bool propagate (std::int32_t i)
 
+void construct (std::vector< T > &data, std::int32_t lo, std::int32_t hi, std::int32_t i)
 
+T query_tree (std::int32_t lo, std::int32_t hi, std::int32_t tlo, std::int32_t thi, std::int32_t i)
 
+T update_tree (T value, std::int32_t position, std::int32_t lo, std::int32_t hi, std::int32_t i)
 
+T update_tree (T value, std::int32_t lo, std::int32_t hi, std::int32_t tlo, std::int32_t thi, std::int32_t i)
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/web/classnm_1_1Sparse-members.html b/web/classnm_1_1Sparse-members.html new file mode 100644 index 0000000..a436ef3 --- /dev/null +++ b/web/classnm_1_1Sparse-members.html @@ -0,0 +1,118 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nm::Sparse< T > Member List
+
+
+ +

This is the complete list of members for nm::Sparse< T >, including all inherited members.

+ + + + + +
cquery(std::int32_t l, std::int32_t r) (defined in nm::Sparse< T >)nm::Sparse< T >
query(std::int32_t l, std::int32_t r) (defined in nm::Sparse< T >)nm::Sparse< T >
Sparse(const std::vector< T > &data, std::function< T(T, T)> &operation) (defined in nm::Sparse< T >)nm::Sparse< T >
~Sparse() (defined in nm::Sparse< T >)nm::Sparse< T >inline
+
+ + + + diff --git a/web/classnm_1_1Sparse.html b/web/classnm_1_1Sparse.html new file mode 100644 index 0000000..924f8fc --- /dev/null +++ b/web/classnm_1_1Sparse.html @@ -0,0 +1,132 @@ + + + + + + + +N-Methods: nm::Sparse< T > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
nm::Sparse< T > Class Template Reference
+
+
+ + + + + + + + +

+Public Member Functions

Sparse (const std::vector< T > &data, std::function< T(T, T)> &operation)
 
+T query (std::int32_t l, std::int32_t r)
 
+T cquery (std::int32_t l, std::int32_t r)
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/web/classnm_1_1Splay-members.html b/web/classnm_1_1Splay-members.html new file mode 100644 index 0000000..c9245f4 --- /dev/null +++ b/web/classnm_1_1Splay-members.html @@ -0,0 +1,143 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nm::Splay< C, T, U > Member List
+
+
+ +

This is the complete list of members for nm::Splay< C, T, U >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
access(T i) (defined in nm::Splay< C, T, U >)nm::Splay< C, T, U >
compare (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
create(T x) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
element(std::size_t k, C *n) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
element(size_t k) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >
inorder(C *n, std::vector< T > &keys) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
insert(T i) (defined in nm::Splay< C, T, U >)nm::Splay< C, T, U >
insert(T i, U y) (defined in nm::Splay< C, T, U >)nm::Splay< C, T, U >
join (defined in nm::Splay< C, T, U >)nm::Splay< C, T, U >friend
keys() (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >
node(T x, bool return_parent=false, bool mark=false) const (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
obtain(T x) const (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >
operator[](T i) (defined in nm::Splay< C, T, U >)nm::Splay< C, T, U >inline
postorder(C *n, std::vector< T > &keys) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
predecessor(C *n, bool return_parent=false) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
preorder(C *n, std::vector< T > &keys) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
remove(T x) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >
root (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
rotate_left(C *n) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
rotate_right(C *n) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
search(T x) const (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >
SearchTree(std::function< bool(T &, T &)> compare=default_compare< T >) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >
size() const noexcept (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >
Splay(std::function< bool(T &, T &)> compare=default_compare< T >) (defined in nm::Splay< C, T, U >)nm::Splay< C, T, U >
splay(T x, C *p, C *g) (defined in nm::Splay< C, T, U >)nm::Splay< C, T, U >protected
split (defined in nm::Splay< C, T, U >)nm::Splay< C, T, U >friend
successor(C *n, bool return_parent=false) (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >protected
~SearchTree() (defined in nm::SearchTree< C, T, U >)nm::SearchTree< C, T, U >inline
~Splay() (defined in nm::Splay< C, T, U >)nm::Splay< C, T, U >inline
+
+ + + + diff --git a/web/classnm_1_1Splay.html b/web/classnm_1_1Splay.html new file mode 100644 index 0000000..a9d4a6a --- /dev/null +++ b/web/classnm_1_1Splay.html @@ -0,0 +1,238 @@ + + + + + + + +N-Methods: nm::Splay< C, T, U > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
nm::Splay< C, T, U > Class Template Reference
+
+
+
+Inheritance diagram for nm::Splay< C, T, U >:
+
+
+ + +nm::SearchTree< C, T, U > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Splay (std::function< bool(T &, T &)> compare=default_compare< T >)
 
+U access (T i)
 
+bool insert (T i)
 
+U insert (T i, U y)
 
+U operator[] (T i)
 
- Public Member Functions inherited from nm::SearchTree< C, T, U >
SearchTree (std::function< bool(T &, T &)> compare=default_compare< T >)
 
+U insert (T x, U y)
 
+bool insert (T x)
 
+bool remove (T x)
 
+bool search (T x) const
 
+U obtain (T x) const
 
+U & operator[] (T x)
 
+U element (size_t k)
 
+std::vector< T > keys ()
 
+std::size_t size () const noexcept
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+C * splay (T x, C *p, C *g)
 
- Protected Member Functions inherited from nm::SearchTree< C, T, U >
+C * create (T x)
 
+C * rotate_left (C *n)
 
+C * rotate_right (C *n)
 
+C * successor (C *n, bool return_parent=false)
 
+C * predecessor (C *n, bool return_parent=false)
 
+C * node (T x, bool return_parent=false, bool mark=false) const
 
+void inorder (C *n, std::vector< T > &keys)
 
+void preorder (C *n, std::vector< T > &keys)
 
+void postorder (C *n, std::vector< T > &keys)
 
+C * element (std::size_t k, C *n)
 
+ + + + + + + +

+Friends

+template<class FC , class FT , class FU >
Splay< FC, FT, FU > join (const Splay< FC, FT, FU > &t1, const Splay< FC, FT, FU > &t2)
 
+template<class FC , class FT , class FU >
std::pair< Splay< FC, FT, FU >, Splay< FC, FT, FU > > split (const FT &i, const Splay< FC, FT, FU > &t)
 
+ + + + + + +

+Additional Inherited Members

- Protected Attributes inherited from nm::SearchTree< C, T, U >
+C * root
 
+std::function< bool(T &, T &)> compare
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/web/classnm_1_1Splay.png b/web/classnm_1_1Splay.png new file mode 100644 index 0000000..376b431 Binary files /dev/null and b/web/classnm_1_1Splay.png differ diff --git a/web/classnm_1_1Spline-members.html b/web/classnm_1_1Spline-members.html new file mode 100644 index 0000000..1132c12 --- /dev/null +++ b/web/classnm_1_1Spline-members.html @@ -0,0 +1,116 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nm::Spline< T > Member List
+
+
+ +

This is the complete list of members for nm::Spline< T >, including all inherited members.

+ + + +
Spline(std::vector< std::vector< T > > &coefficients, std::vector< std::pair< T, T > > &bounds) (defined in nm::Spline< T >)nm::Spline< T >
~Spline() (defined in nm::Spline< T >)nm::Spline< T >inline
+
+ + + + diff --git a/web/classnm_1_1Spline.html b/web/classnm_1_1Spline.html new file mode 100644 index 0000000..8921c26 --- /dev/null +++ b/web/classnm_1_1Spline.html @@ -0,0 +1,126 @@ + + + + + + + +N-Methods: nm::Spline< T > Class Template Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
nm::Spline< T > Class Template Reference
+
+
+ + + + +

+Public Member Functions

Spline (std::vector< std::vector< T > > &coefficients, std::vector< std::pair< T, T > > &bounds)
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/web/classnm_1_1TwoSat-members.html b/web/classnm_1_1TwoSat-members.html new file mode 100644 index 0000000..5264e66 --- /dev/null +++ b/web/classnm_1_1TwoSat-members.html @@ -0,0 +1,119 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nm::TwoSat Member List
+
+
+ +

This is the complete list of members for nm::TwoSat, including all inherited members.

+ + + + + + +
add_clause(std::size_t a, bool negate_a, std::size_t b, bool negate_b) (defined in nm::TwoSat)nm::TwoSat
assignment (defined in nm::TwoSat)nm::TwoSatprotected
satisfiable() (defined in nm::TwoSat)nm::TwoSat
TwoSat(std::size_t number_of_variables) (defined in nm::TwoSat)nm::TwoSat
~TwoSat() (defined in nm::TwoSat)nm::TwoSatinline
+
+ + + + diff --git a/web/classnm_1_1TwoSat.html b/web/classnm_1_1TwoSat.html new file mode 100644 index 0000000..2985ce1 --- /dev/null +++ b/web/classnm_1_1TwoSat.html @@ -0,0 +1,139 @@ + + + + + + + +N-Methods: nm::TwoSat Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
nm::TwoSat Class Reference
+
+
+ + + + + + + + +

+Public Member Functions

TwoSat (std::size_t number_of_variables)
 
+bool satisfiable ()
 
+void add_clause (std::size_t a, bool negate_a, std::size_t b, bool negate_b)
 
+ + + +

+Protected Attributes

+std::vector< bool > assignment
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/web/classnm_1_1UnionFind-members.html b/web/classnm_1_1UnionFind-members.html new file mode 100644 index 0000000..fc5a2f6 --- /dev/null +++ b/web/classnm_1_1UnionFind-members.html @@ -0,0 +1,121 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
nm::UnionFind Member List
+
+
+ +

This is the complete list of members for nm::UnionFind, including all inherited members.

+ + + + + + + + +
count() (defined in nm::UnionFind)nm::UnionFind
find(std::size_t x) (defined in nm::UnionFind)nm::UnionFind
size(std::size_t x) (defined in nm::UnionFind)nm::UnionFind
UnionFind(std::size_t number_of_elements, bool one_indexed=false) (defined in nm::UnionFind)nm::UnionFind
unite(std::size_t x, std::size_t y) (defined in nm::UnionFind)nm::UnionFind
united(std::size_t x, std::size_t y) (defined in nm::UnionFind)nm::UnionFind
~UnionFind() (defined in nm::UnionFind)nm::UnionFindinline
+
+ + + + diff --git a/web/classnm_1_1UnionFind.html b/web/classnm_1_1UnionFind.html new file mode 100644 index 0000000..10bc26e --- /dev/null +++ b/web/classnm_1_1UnionFind.html @@ -0,0 +1,141 @@ + + + + + + + +N-Methods: nm::UnionFind Class Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
nm::UnionFind Class Reference
+
+
+ + + + + + + + + + + + + + +

+Public Member Functions

UnionFind (std::size_t number_of_elements, bool one_indexed=false)
 
+std::size_t find (std::size_t x)
 
+std::size_t unite (std::size_t x, std::size_t y)
 
+bool united (std::size_t x, std::size_t y)
 
+std::size_t size (std::size_t x)
 
+std::size_t count ()
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/web/clipboard.js b/web/clipboard.js new file mode 100644 index 0000000..42c1fb0 --- /dev/null +++ b/web/clipboard.js @@ -0,0 +1,61 @@ +/** + +The code below is based on the Doxygen Awesome project, see +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2022 jothepro + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +*/ + +let clipboard_title = "Copy to clipboard" +let clipboard_icon = `` +let clipboard_successIcon = `` +let clipboard_successDuration = 1000 + +$(function() { + if(navigator.clipboard) { + const fragments = document.getElementsByClassName("fragment") + for(const fragment of fragments) { + const clipboard_div = document.createElement("div") + clipboard_div.classList.add("clipboard") + clipboard_div.innerHTML = clipboard_icon + clipboard_div.title = clipboard_title + $(clipboard_div).click(function() { + const content = this.parentNode.cloneNode(true) + // filter out line number and folded fragments from file listings + content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() }) + let text = content.textContent + // remove trailing newlines and trailing spaces from empty lines + text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'') + navigator.clipboard.writeText(text); + this.classList.add("success") + this.innerHTML = clipboard_successIcon + window.setTimeout(() => { // switch back to normal icon after timeout + this.classList.remove("success") + this.innerHTML = clipboard_icon + }, clipboard_successDuration); + }) + fragment.insertBefore(clipboard_div, fragment.firstChild) + } + } +}) diff --git a/web/closed.png b/web/closed.png new file mode 100644 index 0000000..98cc2c9 Binary files /dev/null and b/web/closed.png differ diff --git a/web/combinatorics_8hpp_source.html b/web/combinatorics_8hpp_source.html new file mode 100644 index 0000000..8ec5b09 --- /dev/null +++ b/web/combinatorics_8hpp_source.html @@ -0,0 +1,145 @@ + + + + + + + +N-Methods: include/combinatorics.hpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
combinatorics.hpp
+
+
+
1#if !defined(COMBINATORICS)
+
2#define COMBINATORICS
+
3
+
4#include <modulo.hpp>
+
5
+
6#include <vector>
+
7#include <cstdint>
+
8
+
9namespace nm {
+
10 template<typename T>
+
11 bool next_permutation(std::vector<T>& permutation);
+
12
+
13 template<typename T>
+
+
14 class PnC : public Arithmetic<T> {
+
15 private:
+
16 T mod;
+
17 std::vector<T> factorial;
+
18 std::vector<T> factorial_inverse;
+
19 public:
+
20 PnC(std::int32_t n, const T mod_prime);
+
21 T get_factorial(std::int32_t n);
+
22 T get_factorial_inverse(std::int32_t n);
+
23 T nPr(std::int32_t n, std::int32_t r);
+
24 T nCr(std::int32_t n, std::int32_t r);
+
25 ~PnC() {};
+
26 };
+
+
27} // permutation and combination
+
28
+
29#endif // COMBINATORICS
+
Definition modulo.hpp:33
+
Definition combinatorics.hpp:14
+
+
+ + + + diff --git a/web/cookie.js b/web/cookie.js new file mode 100644 index 0000000..53ad21d --- /dev/null +++ b/web/cookie.js @@ -0,0 +1,58 @@ +/*! + Cookie helper functions + Copyright (c) 2023 Dimitri van Heesch + Released under MIT license. +*/ +let Cookie = { + cookie_namespace: 'doxygen_', + + readSetting(cookie,defVal) { + if (window.chrome) { + const val = localStorage.getItem(this.cookie_namespace+cookie) || + sessionStorage.getItem(this.cookie_namespace+cookie); + if (val) return val; + } else { + let myCookie = this.cookie_namespace+cookie+"="; + if (document.cookie) { + const index = document.cookie.indexOf(myCookie); + if (index != -1) { + const valStart = index + myCookie.length; + let valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + return document.cookie.substring(valStart, valEnd); + } + } + } + return defVal; + }, + + writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete + if (window.chrome) { + if (days==0) { + sessionStorage.setItem(this.cookie_namespace+cookie,val); + } else { + localStorage.setItem(this.cookie_namespace+cookie,val); + } + } else { + let date = new Date(); + date.setTime(date.getTime()+(days*24*60*60*1000)); + const expiration = days!=0 ? "expires="+date.toGMTString()+";" : ""; + document.cookie = this.cookie_namespace + cookie + "=" + + val + "; SameSite=Lax;" + expiration + "path=/"; + } + }, + + eraseSetting(cookie) { + if (window.chrome) { + if (localStorage.getItem(this.cookie_namespace+cookie)) { + localStorage.removeItem(this.cookie_namespace+cookie); + } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) { + sessionStorage.removeItem(this.cookie_namespace+cookie); + } + } else { + this.writeSetting(cookie,'',-1); + } + }, +} diff --git a/web/crypto_8hpp_source.html b/web/crypto_8hpp_source.html new file mode 100644 index 0000000..6a4e772 --- /dev/null +++ b/web/crypto_8hpp_source.html @@ -0,0 +1,121 @@ + + + + + + + +N-Methods: include/crypto.hpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
crypto.hpp
+
+
+
1#if !defined(CRYPTO)
+
2#define CRYPTO
+
3
+
4namespace nm {
+
5
+
6} // namespace nm
+
7
+
8
+
9#endif // CRYPTO
+
+
+ + + + diff --git a/web/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/web/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 0000000..d7053d7 --- /dev/null +++ b/web/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,112 @@ + + + + + + + +N-Methods: src Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
src Directory Reference
+
+
+
+
+ + + + diff --git a/web/dir_d44c64559bbebec7f509842c48db8b23.html b/web/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..c16c6fb --- /dev/null +++ b/web/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,148 @@ + + + + + + + +N-Methods: include Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
include Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 combinatorics.hpp
 
 crypto.hpp
 
 exponentiation.hpp
 
 gcd.hpp
 
 graph.hpp
 
 hash.hpp
 
 interpolation.hpp
 
 modulo.hpp
 
 newton.hpp
 
 primes.hpp
 
 random.hpp
 
 search.hpp
 
 sort.hpp
 
 table.hpp
 
 trees.hpp
 
 utility.hpp
 
+
+
+ + + + diff --git a/web/dir_d44c64559bbebec7f509842c48db8b23.js b/web/dir_d44c64559bbebec7f509842c48db8b23.js new file mode 100644 index 0000000..67934eb --- /dev/null +++ b/web/dir_d44c64559bbebec7f509842c48db8b23.js @@ -0,0 +1,19 @@ +var dir_d44c64559bbebec7f509842c48db8b23 = +[ + [ "combinatorics.hpp", "combinatorics_8hpp_source.html", null ], + [ "crypto.hpp", "crypto_8hpp_source.html", null ], + [ "exponentiation.hpp", "exponentiation_8hpp_source.html", null ], + [ "gcd.hpp", "gcd_8hpp_source.html", null ], + [ "graph.hpp", "graph_8hpp_source.html", null ], + [ "hash.hpp", "hash_8hpp_source.html", null ], + [ "interpolation.hpp", "interpolation_8hpp_source.html", null ], + [ "modulo.hpp", "modulo_8hpp_source.html", null ], + [ "newton.hpp", "newton_8hpp_source.html", null ], + [ "primes.hpp", "primes_8hpp_source.html", null ], + [ "random.hpp", "random_8hpp_source.html", null ], + [ "search.hpp", "search_8hpp_source.html", null ], + [ "sort.hpp", "sort_8hpp_source.html", null ], + [ "table.hpp", "table_8hpp_source.html", null ], + [ "trees.hpp", "trees_8hpp_source.html", null ], + [ "utility.hpp", "utility_8hpp_source.html", null ] +]; \ No newline at end of file diff --git a/web/dir_e68e8157741866f444e17edd764ebbae.html b/web/dir_e68e8157741866f444e17edd764ebbae.html new file mode 100644 index 0000000..6b046df --- /dev/null +++ b/web/dir_e68e8157741866f444e17edd764ebbae.html @@ -0,0 +1,112 @@ + + + + + + + +N-Methods: doc Directory Reference + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
doc Directory Reference
+
+
+
+
+ + + + diff --git a/web/doc.svg b/web/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/web/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/web/docd.svg b/web/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/web/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/web/doxygen.css b/web/doxygen.css new file mode 100644 index 0000000..574b333 --- /dev/null +++ b/web/doxygen.css @@ -0,0 +1,2247 @@ +/* The standard CSS for doxygen 1.12.0*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #4665A2; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--header-gradient-image: url('nav_h.png'); +--group-header-separator-color: #879ECB; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 104px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #5373B4; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #9CAFD4; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-title-gradient-image: url('nav_f.png'); +--memdef-proto-background-color: #DFE5F1; +--memdef-proto-text-color: #253555; +--memdef-proto-text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_b.png'); +--nav-gradient-hover-image: url('tab_h.png'); +--nav-gradient-active-image: url('tab_a.png'); +--nav-gradient-active-image-parent: url("../tab_a.png"); +--nav-separator-image: url('tab_s.png'); +--nav-breadcrumb-image: url('bc_s.png'); +--nav-breadcrumb-border-color: #C2CDE4; +--nav-splitbar-image: url('splitbar.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-text-normal-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #9CAFD4; +--nav-arrow-selected-color: #9CAFD4; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-magnification-image: url('mag.svg'); +--search-magnification-select-image: url('mag_sel.svg'); +--search-active-color: black; +--search-filter-background-color: #F9FAFC; +--search-filter-foreground-color: black; +--search-filter-border-color: #90A5CE; +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: #EEF1F7; +--search-results-border-color: black; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #555; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--fragment-copy-ok-color: #2EC82E; +--tooltip-foreground-color: black; +--tooltip-background-color: white; +--tooltip-border-color: gray; +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 1px 1px 7px gray; +--fold-line-color: #808080; +--fold-minus-image: url('minus.svg'); +--fold-plus-image: url('plus.svg'); +--fold-minus-image-relpath: url('../../minus.svg'); +--fold-plus-image-relpath: url('../../plus.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +/** special sections */ +--warning-color-bg: #f8d1cc; +--warning-color-hl: #b61825; +--warning-color-text: #75070f; +--note-color-bg: #faf3d8; +--note-color-hl: #f3a600; +--note-color-text: #5f4204; +--todo-color-bg: #e4f3ff; +--todo-color-hl: #1879C4; +--todo-color-text: #274a5c; +--test-color-bg: #e8e8ff; +--test-color-hl: #3939C4; +--test-color-text: #1a1a5c; +--deprecated-color-bg: #ecf0f3; +--deprecated-color-hl: #5b6269; +--deprecated-color-text: #43454a; +--bug-color-bg: #e4dafd; +--bug-color-hl: #5b2bdd; +--bug-color-text: #2a0d72; +--invariant-color-bg: #d8f1e3; +--invariant-color-hl: #44b86f; +--invariant-color-text: #265532; +} + +@media (prefers-color-scheme: dark) { + html:not(.dark-mode) { + color-scheme: dark; + +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--header-gradient-image: url('nav_hd.png'); +--group-header-separator-color: #283A5D; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #354C79; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #283A5D; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-doc-image: url('docd.svg'); +--icon-folder-open-image: url('folderopend.svg'); +--icon-folder-closed-image: url('folderclosedd.svg'); + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-title-gradient-image: url('nav_fd.png'); +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-proto-text-shadow: 0px 1px 1px rgba(0, 0, 0, 0.9); +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-gradient-image: url('tab_bd.png'); +--nav-gradient-hover-image: url('tab_hd.png'); +--nav-gradient-active-image: url('tab_ad.png'); +--nav-gradient-active-image-parent: url("../tab_ad.png"); +--nav-separator-image: url('tab_sd.png'); +--nav-breadcrumb-image: url('bc_sd.png'); +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-image: url('splitbard.png'); +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-text-normal-shadow: 0px 1px 1px black; +--nav-text-hover-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-text-active-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #334975; +--nav-arrow-selected-color: #90A5CE; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-magnification-image: url('mag_d.svg'); +--search-magnification-select-image: url('mag_seld.svg'); +--search-active-color: #C5C5C5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: #101826; +--search-results-foreground-color: #90A5CE; +--search-results-border-color: #7C95C6; +--search-box-shadow: inset 0.5px 0.5px 3px 0px #2F436C; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: #090D16; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--fragment-copy-ok-color: #0EA80E; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; +--fold-minus-image: url('minusd.svg'); +--fold-plus-image: url('plusd.svg'); +--fold-minus-image-relpath: url('../../minusd.svg'); +--fold-plus-image-relpath: url('../../plusd.svg'); + +/** font-family */ +--font-family-normal: Roboto,sans-serif; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: Tahoma,Arial,sans-serif; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +/** special sections */ +--warning-color-bg: #2e1917; +--warning-color-hl: #ad2617; +--warning-color-text: #f5b1aa; +--note-color-bg: #3b2e04; +--note-color-hl: #f1b602; +--note-color-text: #ceb670; +--todo-color-bg: #163750; +--todo-color-hl: #1982D2; +--todo-color-text: #dcf0fa; +--test-color-bg: #121258; +--test-color-hl: #4242cf; +--test-color-text: #c0c0da; +--deprecated-color-bg: #2e323b; +--deprecated-color-hl: #738396; +--deprecated-color-text: #abb0bd; +--bug-color-bg: #2a2536; +--bug-color-hl: #7661b3; +--bug-color-text: #ae9ed6; +--invariant-color-bg: #303a35; +--invariant-color-hl: #76ce96; +--invariant-color-text: #cceed5; +}} +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--glow-color); +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: var(--nav-gradient-active-image); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: var(--index-header-color); +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + +.classindex dl.odd { + background-color: var(--index-odd-item-bg-color); +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: var(--page-link-color); + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: var(--page-visited-link-color); +} + +a:hover { + text-decoration: none; + background: linear-gradient(to bottom, transparent 0,transparent calc(100% - 1px), currentColor 100%); +} + +a:hover > span.arrow { + text-decoration: none; + background : var(--nav-background-color); +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: var(--code-link-color); +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: var(--code-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul.check { + list-style:none; + text-indent: -16px; + padding-left: 38px; +} +li.unchecked:before { + content: "\2610\A0"; +} +li.checked:before { + content: "\2611\A0"; +} + +ol { + text-indent: 0px; +} + +ul { + text-indent: 0px; + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; + overflow-y: hidden; + position: relative; + min-height: 12px; + margin: 10px 0px; + padding: 10px 10px; + border: 1px solid var(--fragment-border-color); + border-radius: 4px; + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); +} + +pre.fragment { + word-wrap: break-word; + font-size: 10pt; + line-height: 125%; + font-family: var(--font-family-monospace); +} + +.clipboard { + width: 24px; + height: 24px; + right: 5px; + top: 5px; + opacity: 0; + position: absolute; + display: inline; + overflow: auto; + fill: var(--fragment-foreground-color); + justify-content: center; + align-items: center; + cursor: pointer; +} + +.clipboard.success { + border: 1px solid var(--fragment-foreground-color); + border-radius: 4px; +} + +.fragment:hover .clipboard, .clipboard.success { + opacity: .28; +} + +.clipboard:hover, .clipboard.success { + opacity: 1 !important; +} + +.clipboard:active:not([class~=success]) svg { + transform: scale(.91); +} + +.clipboard.success svg { + fill: var(--fragment-copy-ok-color); +} + +.clipboard.success { + border-color: var(--fragment-copy-ok-color); +} + +div.line { + font-family: var(--font-family-monospace); + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); +} + +span.lineno a:hover { + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: var(--page-foreground-color); + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: var(--code-keyword-color); +} + +span.keywordtype { + color: var(--code-type-keyword-color); +} + +span.keywordflow { + color: var(--code-flow-keyword-color); +} + +span.comment { + color: var(--code-comment-color); +} + +span.preprocessor { + color: var(--code-preprocessor-color); +} + +span.stringliteral { + color: var(--code-string-literal-color); +} + +span.charliteral { + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); +} + +span.vhdldigit { + color: var(--code-vhdl-digit-color); +} + +span.vhdlchar { + color: var(--code-vhdl-char-color); +} + +span.vhdlkeyword { + color: var(--code-vhdl-keyword-color); +} + +span.vhdllogic { + color: var(--code-vhdl-logic-color); +} + +blockquote { + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid var(--table-cell-border-color); +} + +th.dirtab { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid var(--separator-color); +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: var(--memdecl-foreground-color); +} + +.memSeparator { + border-bottom: 1px solid var(--memdecl-separator-color); + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: var(--memdecl-template-color); + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: var(--memdef-title-gradient-image); + background-repeat: repeat-x; + background-color: var(--memdef-title-background-color); + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: var(--memdef-template-color); + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px var(--glow-color); +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + text-shadow: var(--memdef-proto-text-shadow); + background-color: var(--memdef-proto-background-color); + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: var(--font-family-monospace); + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: var(--memdef-doc-background-color); + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; +} + +.paramname { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; + margin-left: 2px; +} + +.paramname em { + color: var(--memdef-param-name-color); + font-style: normal; + margin-right: 1px; +} + +.paramname .paramdefval { + font-family: var(--font-family-monospace); +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: var(--font-family-monospace); + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); + text-shadow: none; + color: var(--label-foreground-color); + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid var(--directory-separator-color); + border-bottom: 1px solid var(--directory-separator-color); + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + +.directory tr.even { + padding-left: 6px; + background-color: var(--index-even-item-bg-color); +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); +} + +.arrow { + color: var(--nav-arrow-color); + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-open-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-folder-closed-image); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:var(--icon-doc-image); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: var(--footer-foreground-color); +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fieldinit { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fieldinit { + padding-top: 3px; + text-align: right; +} + + +.fieldtable td.fielddoc { + border-bottom: 1px solid var(--memdef-border-color); +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: var(--memdef-title-gradient-image); + background-repeat:repeat-x; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: var(--nav-gradient-image); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: var(--nav-gradient-image); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:var(--nav-text-normal-color); + border:solid 1px var(--nav-breadcrumb-border-color); + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:var(--nav-breadcrumb-image); + background-repeat:no-repeat; + background-position:right; + color: var(--nav-foreground-color); +} + +.navpath li.navelem a +{ + height:32px; + display:block; + outline: none; + color: var(--nav-text-normal-color); + font-family: var(--font-family-nav); + text-shadow: var(--nav-text-normal-shadow); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: var(--nav-text-hover-color); + text-shadow: var(--nav-text-hover-shadow); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: var(--footer-foreground-color); + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: var(--header-gradient-image); + background-repeat:repeat-x; + background-color: var(--header-background-color); + margin: 0px; + border-bottom: 1px solid var(--header-separator-color); +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* + +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention, dl.important { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +*/ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.important, dl.note, dl.deprecated, dl.bug, +dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark { + padding: 10px; + margin: 10px 0px; + overflow: hidden; + margin-left: 0; + border-radius: 4px; +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention, dl.important { + background: var(--warning-color-bg); + border-left: 8px solid var(--warning-color-hl); + color: var(--warning-color-text); +} + +dl.warning dt, dl.attention dt, dl.important dt { + color: var(--warning-color-hl); +} + +dl.note, dl.remark { + background: var(--note-color-bg); + border-left: 8px solid var(--note-color-hl); + color: var(--note-color-text); +} + +dl.note dt, dl.remark dt { + color: var(--note-color-hl); +} + +dl.todo { + background: var(--todo-color-bg); + border-left: 8px solid var(--todo-color-hl); + color: var(--todo-color-text); +} + +dl.todo dt { + color: var(--todo-color-hl); +} + +dl.test { + background: var(--test-color-bg); + border-left: 8px solid var(--test-color-hl); + color: var(--test-color-text); +} + +dl.test dt { + color: var(--test-color-hl); +} + +dl.bug dt a { + color: var(--bug-color-hl) !important; +} + +dl.bug { + background: var(--bug-color-bg); + border-left: 8px solid var(--bug-color-hl); + color: var(--bug-color-text); +} + +dl.bug dt a { + color: var(--bug-color-hl) !important; +} + +dl.deprecated { + background: var(--deprecated-color-bg); + border-left: 8px solid var(--deprecated-color-hl); + color: var(--deprecated-color-text); +} + +dl.deprecated dt a { + color: var(--deprecated-color-hl) !important; +} + +dl.note dd, dl.warning dd, dl.pre dd, dl.post dd, +dl.remark dd, dl.attention dd, dl.important dd, dl.invariant dd, +dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: var(--invariant-color-bg); + border-left: 8px solid var(--invariant-color-hl); + color: var(--invariant-color-text); +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: var(--invariant-color-hl); +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: var(--font-family-title); + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font-size: 90%; + font-family: var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% var(--font-family-title); + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li[class^='level'] { + margin-left: 15px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.empty { + background-image: none; + margin-top: 0px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: var(--inherit-header-color); + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px 4px 4px 4px; + box-shadow: var(--tooltip-shadow); + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: var(--tooltip-doc-color); + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: var(--tooltip-declaration-color); +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: var(--tooltip-background-color); + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: var(--tooltip-border-color); + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: var(--tooltip-border-color); + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: var(--tooltip-border-color); + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid var(--table-cell-border-color); + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd, samp +{ + display: inline-block; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/web/doxygen.svg b/web/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/web/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/doxygen_crawl.html b/web/doxygen_crawl.html new file mode 100644 index 0000000..386a73d --- /dev/null +++ b/web/doxygen_crawl.html @@ -0,0 +1,171 @@ + + + +Validator / crawler helper + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/dynsections.js b/web/dynsections.js new file mode 100644 index 0000000..b05f4c8 --- /dev/null +++ b/web/dynsections.js @@ -0,0 +1,198 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function toggleVisibility(linkObj) { + return dynsection.toggleVisibility(linkObj); +} + +let dynsection = { + + // helper function + updateStripes : function() { + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); + }, + + toggleVisibility : function(linkObj) { + const base = $(linkObj).attr('id'); + const summary = $('#'+base+'-summary'); + const content = $('#'+base+'-content'); + const trigger = $('#'+base+'-trigger'); + const src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; + }, + + toggleLevel : function(level) { + $('table.directory tr').each(function() { + const l = this.id.split('_').length-1; + const i = $('#img'+this.id.substring(3)); + const a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + const id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + const start = $(this).attr('data-start'); + const end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + const line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); + }, +}; +/* @license-end */ diff --git a/web/exponentiation_8hpp_source.html b/web/exponentiation_8hpp_source.html new file mode 100644 index 0000000..489d361 --- /dev/null +++ b/web/exponentiation_8hpp_source.html @@ -0,0 +1,124 @@ + + + + + + + +N-Methods: include/exponentiation.hpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
exponentiation.hpp
+
+
+
1#if !defined(BINARY_EXPONENTIATION)
+
2#define BINARY_EXPONENTIATION
+
3
+
4namespace nm {
+
5 template <typename T>
+
6 T bin_exp(T x, T y);
+
7
+
8 template <typename T>
+
9 T bin_exp_iterative(T x, T y);
+
10} // exponentiation
+
11
+
12#endif // BINARY_EXPONENTIATION
+
+
+ + + + diff --git a/web/files.html b/web/files.html new file mode 100644 index 0000000..5366a3e --- /dev/null +++ b/web/files.html @@ -0,0 +1,132 @@ + + + + + + + +N-Methods: File List + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 12]
+ + + + + + + + + + + + + + + + + +
  include
 combinatorics.hpp
 crypto.hpp
 exponentiation.hpp
 gcd.hpp
 graph.hpp
 hash.hpp
 interpolation.hpp
 modulo.hpp
 newton.hpp
 primes.hpp
 random.hpp
 search.hpp
 sort.hpp
 table.hpp
 trees.hpp
 utility.hpp
+
+
+
+ + + + diff --git a/web/files_dup.js b/web/files_dup.js new file mode 100644 index 0000000..f1749d9 --- /dev/null +++ b/web/files_dup.js @@ -0,0 +1,4 @@ +var files_dup = +[ + [ "include", "dir_d44c64559bbebec7f509842c48db8b23.html", "dir_d44c64559bbebec7f509842c48db8b23" ] +]; \ No newline at end of file diff --git a/web/folderclosed.svg b/web/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/web/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/web/folderclosedd.svg b/web/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/web/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/web/folderopen.svg b/web/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/web/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/web/folderopend.svg b/web/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/web/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/web/gcd_8hpp_source.html b/web/gcd_8hpp_source.html new file mode 100644 index 0000000..0fb66a5 --- /dev/null +++ b/web/gcd_8hpp_source.html @@ -0,0 +1,130 @@ + + + + + + + +N-Methods: include/gcd.hpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
gcd.hpp
+
+
+
1#if !defined(GCD)
+
2#define GCD
+
3
+
4namespace nm {
+
5 template <typename T>
+
6 T gcd(T a, T b);
+
7
+
8 template <typename T>
+
9 T gcd_iterative(T a, T b);
+
10
+
11 template <typename T>
+
12 T extended_gcd(T a, T b, T& x, T& y);
+
13
+
14 template <typename T>
+
15 T extended_gcd_iterative(T a, T b, T& x, T& y);
+
16} // greatest common divisors
+
17
+
18#endif // GCD
+
+
+ + + + diff --git a/web/graph_8hpp_source.html b/web/graph_8hpp_source.html new file mode 100644 index 0000000..009e7ce --- /dev/null +++ b/web/graph_8hpp_source.html @@ -0,0 +1,173 @@ + + + + + + + +N-Methods: include/graph.hpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
graph.hpp
+
+
+
1#if !defined(GRAPH)
+
2#define GRAPH
+
3
+
4#include <vector>
+
5#include <cstdint>
+
6
+
7namespace nm {
+
8 /*
+
9 * Galler and Fischer
+
10 * Generic implementation
+
11 */
+
+
12 class UnionFind {
+
13 private:
+
14 bool one;
+
15 std::size_t n;
+
16 std::vector<std::int32_t> parent;
+
17
+
18 public:
+
19 UnionFind(std::size_t number_of_elements, bool one_indexed = false);
+
20 std::size_t find(std::size_t x);
+
21 std::size_t unite(std::size_t x, std::size_t y);
+
22 bool united(std::size_t x, std::size_t y);
+
23 std::size_t size(std::size_t x);
+
24 std::size_t count();
+
25 ~UnionFind() {};
+
26 };
+
+
27} // union find
+
28
+
29namespace nm {
+
+
30 class TwoSat {
+
31 private:
+
32 bool solved;
+
33 std::size_t n;
+
34 std::vector<bool> used;
+
35 std::vector<std::size_t> order;
+
36 std::vector<std::int32_t> component;
+
37 std::vector<std::vector<std::size_t> > adjacency_forward;
+
38 std::vector<std::vector<std::size_t> > adjacency_backward;
+
39
+
40 void dfs_forward(std::size_t u);
+
41 void dfs_backward(std::size_t u, const std::int32_t c);
+
42
+
43 protected:
+
44 std::vector<bool> assignment;
+
45
+
46 public:
+
47 TwoSat(std::size_t number_of_variables);
+
48 bool satisfiable();
+
49 void add_clause(std::size_t a, bool negate_a, std::size_t b, bool negate_b);
+
50 ~TwoSat() {};
+
51 };
+
+
52} // two satisfiability
+
53
+
54
+
55#endif // Union Find
+
Definition graph.hpp:30
+
Definition graph.hpp:12
+
+
+ + + + diff --git a/web/hash_8hpp_source.html b/web/hash_8hpp_source.html new file mode 100644 index 0000000..81972e7 --- /dev/null +++ b/web/hash_8hpp_source.html @@ -0,0 +1,200 @@ + + + + + + + +N-Methods: include/hash.hpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
hash.hpp
+
+
+
1#if !defined(HASH)
+
2#define HASH
+
3
+
4#include <modulo.hpp>
+
5#include <trees.hpp>
+
6
+
7#include <string>
+
8#include <cstdint>
+
9
+
10namespace nm {
+
11 template <std::int64_t M, std::int64_t P>
+
+
12 class Hash : public Arithmetic<std::int64_t> {
+
13 private:
+
14 std::size_t n;
+
15 std::vector<std::int64_t> hash;
+
16 std::vector<std::int64_t> power;
+
17
+
18 public:
+
19 Hash(std::string &s);
+
20 std::int64_t Interval(std::size_t left, std::size_t right);
+
21 ~Hash() {};
+
22 };
+
+
23
+
24} // string hash
+
25
+
26namespace nm {
+
27 const std::int32_t P_ASCII = 257;
+
28
+
29 /*
+
30 * M is expected to be a modular data type
+
31 * (such as int32_m, int32_n, int32_p).
+
32 * P is any prime that is greater than but
+
33 * near the values encountered during hashing.
+
34 * P must be lower than the Modulus.
+
35 */
+
36 template <typename M, const std::int32_t P>
+
+
37 class ModHash{
+
38 private:
+
39 std::size_t n;
+
40 std::vector<M> hash;
+
41 std::vector<M> power;
+
42
+
43 public:
+
44 ModHash();
+
45
+
46 void clear();
+
47 void stream(char c);
+
48 void stream(std::string &s);
+
49
+
50 std::int64_t Interval(std::size_t left, std::size_t right);
+
51
+
52 ~ModHash() {};
+
53 };
+
+
54
+
55} // better string hash
+
56
+
57namespace nm {
+
58 typedef ModHash<int32_m, P_ASCII> Hash_ASCII;
+
59}
+
60
+
61
+
62namespace nm {
+
63 template <typename T>
+
+ +
65 private:
+
66 Splay<Node<T, T>, T, T> coordinates;
+
67 std::vector<T> elements;
+
68 public:
+
69 CoordinateCompression(std::vector<T> data);
+
70 std::int32_t coordinate(T x);
+
71 T element(std::size_t i);
+ +
73 };
+
+
74} // coordinate compression
+
75
+
76
+
77#endif // HASH
+
Definition modulo.hpp:33
+
Definition hash.hpp:64
+
Definition hash.hpp:12
+
Definition hash.hpp:37
+
Definition trees.hpp:173
+
+
+ + + + diff --git a/web/hierarchy.html b/web/hierarchy.html new file mode 100644 index 0000000..27c849a --- /dev/null +++ b/web/hierarchy.html @@ -0,0 +1,147 @@ + + + + + + + +N-Methods: Class Hierarchy + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
+
+ + + + diff --git a/web/hierarchy.js b/web/hierarchy.js new file mode 100644 index 0000000..c24377c --- /dev/null +++ b/web/hierarchy.js @@ -0,0 +1,40 @@ +var hierarchy = +[ + [ "nm::Arithmetic< T >", "classnm_1_1Arithmetic.html", [ + [ "nm::PnC< T >", "classnm_1_1PnC.html", null ] + ] ], + [ "nm::Arithmetic< std::int64_t >", "classnm_1_1Arithmetic.html", [ + [ "nm::Hash< M, P >", "classnm_1_1Hash.html", null ] + ] ], + [ "nm::CoordinateCompression< T >", "classnm_1_1CoordinateCompression.html", null ], + [ "nm::Fenwick< T >", "classnm_1_1Fenwick.html", null ], + [ "nm::Int32_M< M >", "classnm_1_1Int32__M.html", null ], + [ "nm::Int32_M< M17 >", "classnm_1_1Int32__M.html", null ], + [ "nm::Integrator< T >", "structnm_1_1Integrator.html", null ], + [ "nm::Link< C >", "structnm_1_1Link.html", null ], + [ "nm::Link< nm::Node< T, T > >", "structnm_1_1Link.html", null ], + [ "nm::Link< nm::Node< T, U > >", "structnm_1_1Link.html", null ], + [ "nm::ModHash< M, P >", "classnm_1_1ModHash.html", null ], + [ "nm::MultiSort< T, U >", "classnm_1_1MultiSort.html", null ], + [ "nm::Node< T, U >", "structnm_1_1Node.html", null ], + [ "nm::Node< T, T >", "structnm_1_1Node.html", null ], + [ "nm::Primality", "classnm_1_1Primality.html", null ], + [ "nm::Random", "classnm_1_1Random.html", null ], + [ "nm::SearchTree< C, T, U >", "classnm_1_1SearchTree.html", [ + [ "nm::AVL< C, T, U >", "classnm_1_1AVL.html", null ], + [ "nm::Splay< C, T, U >", "classnm_1_1Splay.html", null ] + ] ], + [ "nm::SearchTree< nm::Node< T, T >, T, T >", "classnm_1_1SearchTree.html", [ + [ "nm::Splay< nm::Node< T, T >, T, T >", "classnm_1_1Splay.html", null ] + ] ], + [ "nm::SegmentTree< T, U >", "classnm_1_1SegmentTree.html", null ], + [ "nm::SLE", "classnm_1_1SLE.html", null ], + [ "nm::Sparse< T >", "classnm_1_1Sparse.html", null ], + [ "nm::Spline< T >", "classnm_1_1Spline.html", null ], + [ "nm::SS", "classnm_1_1SS.html", [ + [ "nm::BMA", "classnm_1_1BMA.html", null ], + [ "nm::KMP", "classnm_1_1KMP.html", null ] + ] ], + [ "nm::TwoSat", "classnm_1_1TwoSat.html", null ], + [ "nm::UnionFind", "classnm_1_1UnionFind.html", null ] +]; \ No newline at end of file diff --git a/web/index.html b/web/index.html new file mode 100644 index 0000000..0bb62c4 --- /dev/null +++ b/web/index.html @@ -0,0 +1,112 @@ + + + + + + + +N-Methods: Main Page + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
N-Methods Documentation
+
+
+ +
+
+ + + + diff --git a/web/interpolation_8hpp_source.html b/web/interpolation_8hpp_source.html new file mode 100644 index 0000000..8fa3528 --- /dev/null +++ b/web/interpolation_8hpp_source.html @@ -0,0 +1,212 @@ + + + + + + + +N-Methods: include/interpolation.hpp Source File + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
interpolation.hpp
+
+
+
1#if !defined(INTERPOLATION)
+
2#define INTERPOLATION
+
3
+
4#include <utility>
+
5#include <vector>
+
6#include <functional>
+
7#include <cstdint>
+
8
+
9// TODO: #include <stdfloat>
+
10
+
11namespace nm {
+
12 const long double PRECISION = 1e-8;
+
13 enum classification {
+
14 zero,
+
15 one,
+
16 infinite,
+
17
+
18 // zero: no solution
+
19 // one: one solution
+
20 // infinite: many solutions
+
21 };
+
22
+
23 enum solver {
+
24 none, // unsolved
+
25 gauss,
+
26
+
27 // others
+
28 };
+
29
+
+
30 class SLE {
+
31 private:
+
32 std::size_t n;
+
33 std::vector<std::vector<long double> > A;
+
34 std::vector<std::uint32_t> pivots;
+
35
+
36 solver applied;
+
37 solver gauss();
+
38
+
39 protected:
+
40 void normalize();
+
41 std::uint32_t pivot(std::size_t column, std::size_t row = 0,
+
42 long double threshold = PRECISION);
+
43
+
44 // add solvers
+
45 void cramer();
+
46 void fourier();
+
47
+
48 void singular_value();
+
49 void lu();
+
50 void qr();
+
51
+
52 // square positive definite
+
53 void cholesky();
+
54
+
55 public:
+
56 SLE() {this->n = -1;};
+
57 SLE(std::vector<std::vector<long double> > matrix);
+
58 SLE(std::size_t nr, std::size_t nc);
+
59 ~SLE() {};
+
60
+
61 void add_row(std::vector<long double> row);
+
62 classification solve(std::vector<long double> &x,
+
63 long double threshold = PRECISION, solver use = solver::gauss);
+
64
+
65 std::size_t rank();
+
66 std::vector<long double> eigenvalues();
+
67
+
68 // rank equals n
+
69 long double determinant();
+
70 SLE inverse();
+
71 };
+
+
72} // system of linear equations
+
73
+
74namespace nm {
+
75 template<typename T>
+
76 std::function<T(T)> polynomial(const std::vector<T> &coefficients);
+
77
+
78 template<typename T>
+
+
79 class Spline {
+
80 private:
+
81 std::vector<std::vector<T> > coefficients;
+
82 std::vector<std::pair<T, T> > bounds;
+
83 public:
+
84 // bounds is expected to be sorted
+
85 // coefficients and bounds correspond
+
86 Spline(std::vector<std::vector<T> > &coefficients,
+
87 std::vector<std::pair<T, T> > &bounds);
+
88 ~Spline() {};
+
89 };
+
+
90
+
91} // polynomials and spline
+
92
+
93
+
94#endif // INTERPOLATION
+
Definition interpolation.hpp:30
+
Definition interpolation.hpp:79
+
+
+ + + + diff --git a/web/jquery.js b/web/jquery.js new file mode 100644 index 0000000..875ada7 --- /dev/null +++ b/web/jquery.js @@ -0,0 +1,204 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e} +var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp( +"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType +}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c +)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){ +return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll( +":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id") +)&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push( +"\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test( +a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null, +null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne +).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for( +var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n; +return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0, +r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r] +,C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each( +function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r, +"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})} +),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each( +"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t +){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t +]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i}, +getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within, +s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})), +this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t +).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split( +","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add( +this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{ +width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(), +!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){ +this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height +,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e, +i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left +)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e +){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0), +i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth( +)-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e, +function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0 +]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){ +targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se", +"n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if( +session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)} +closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if( +session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE, +function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset); +tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList, +finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight())); +return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")} +function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(), +elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight, +viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b, +"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery); +/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)), +mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend( +$.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy( +this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData( +"smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id" +).indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?( +this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for( +var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){ +return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if(( +!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&( +this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0 +]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass( +"highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){ +t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]" +)||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){ +t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"), +a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i, +downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2) +)&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t +)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0), +canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}}, +rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})} +return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1, +bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); diff --git a/web/md_doc_221st-century-romance.html b/web/md_doc_221st-century-romance.html new file mode 100644 index 0000000..f03a222 --- /dev/null +++ b/web/md_doc_221st-century-romance.html @@ -0,0 +1,142 @@ + + + + + + + +N-Methods: Love and War in 21st Century + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Love and War in 21st Century
+
+
+

Circa Mid 2022: While scrolling through a platform in lookout for latest tech trends that are engulfing the world, instead one finds a myriad of posts about people sharing their problems!

+
+

‍Banker loves Abhilasha, but Abhilasha loves America!

+

So, the love of your life was Miss Abhilasha?
+ Sadly, Abhilasha got accepted to study in America.
+ Don't worry, my friend, you can always find better.
+ Or not, but surely, you can become a sky diver!
+ Pawan
+ (inspired from a possibly fake post on anonymous social media platform years back).
+

+
+

Mr Banker probably knows better than I do, that such is Zindagi (Life) - You Can't Always Get What You Want unless you Get Lucky, or maybe find a natural arbitrage, or create an artificial one (like being a Chor), but YOU CAN feel the power of percussion with Sindbad the Sailor, Running Up That Hill to Paint It, Black.

+

Let Abhilasha calculate Young's Modulus, and integrate stress-strain curve for toughness of composites and ceramics to establish their applications in armour augmentation. Meanwhile: you can fall free, from great height, like a meteorite! Don't forget to wear a parachute!

+
+

‍Bright Boys in Love and War!

+

Smart people don't play a losing game,
+ And if they do, they seldom play for long.
+ Unless they are at war, or deeply in love.
+

+

It seems all fair, as the bards often sing:
+ Of how blind love is, when it is in its prime,
+ And what grind war is, every freaking time.
+ Pawan
+

+
+

I can't keep on sympathizing with other people's problems, when I have multitude of my own problems to solve.
+ On retreat! Over and out!

+

+References

+

So many: Tolstoy, Shakespeare . . . et cetera!

+
+
+
+ + + + diff --git a/web/md_doc_2confused-padawan.html b/web/md_doc_2confused-padawan.html new file mode 100644 index 0000000..6ad03b5 --- /dev/null +++ b/web/md_doc_2confused-padawan.html @@ -0,0 +1,212 @@ + + + + + + + +N-Methods: Confused Padawan Trying To Find His Place In The World. + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Confused Padawan Trying To Find His Place In The World.
+
+
+

Torti
+ Billi
+

+

+Progress

+

STALLED.

+
    +
  • Script.
    +
  • +
+
    +
  • Acquire tools.
    +
      +
    • Passive Graphics Tablet.
      +
    • +
    +
  • +
  • Draw characters.
    +
      +
    • Torti (Tortoise).
      +
    • +
    +
      +
    • Billi (Cat).
      +
    • +
    • Padawan.
      +
    • +
    +
  • +
+
    +
  • Draw ambience.
    +
  • +
+
    +
  • Add script.
    +
  • +
+
    +
  • Export.
    +
  • +
+
    +
  • ~Present (to everyone - not just yourself - if easy enough to understand)~.
    + Nothing worth sharing. For Later. Primary First.
    +
  • +
+

+Comic Script

+

Padawan is participating in a contest that will help him achieve something. Billi is a cat. Torti is a tortoise.
+

+

Padawan: Look at all these people bolting past. A disgrace of astronomical proportions. I feel so inadequate and worthless - feel like giving up!

+

Billi (Sarcastically): Yeah totally. Completely agreed. Your existence is futile. Pass on that snacks and empty the litter box on your way out.
+

+

Torti: Now is not the time to get Comfortably Numb. Maybe the wolf no longer feels hungry enough! Think about all the hopes, dreams and desires! What about discovering the secrets of the universe? What about the PhD you always wanted to pursue - 'doctor' does sound cool before your name, doesn't it? What about cosmology, and black hole dynamics, and QM - I am pretty sure you still don't understand more than half of it! What about Irodov's Problems - you still haven't solved it all - you cannot leave it unfinished . . . anxiety starts to percolate . . . what about the increasing stack of unread books, languages to learn, music to play, and legions of unsolved problems - forget about grad level exams and putnam papers, you still haven't reconciled with the regional olympiad papers . . . anxiety pours . . . so many people to meet, understand and learn from, all those bills and taxes to pay, places to visit - think about Sanchi, Konark, Hampi, Taj - all the museums and libraries to go to . . . anxiety avalanche falls . . . what about your dream laboratory and the tools and equipments that go in it. YOU HAVE SO MUCH TO LEARN AND BUILD! So, you better straighten up Soldier. Battle formation, prepare to flank and re-engage.
+ Hey Smart AI Assistant, please play Born To Run.
+

+

Smart AI Assistant: Right away (wannabe Master but still a) Padawan's pet Torti. Music subscription renewed! Playing I Still Haven't Found What I'm Looking For. Enjoy the beat(ing)s LOL.
+

+

Billi: That Master Oogway is probably going to live to one fifty! Keep listening to him, and you will end up like a wilted candle, because Aakash Ke Us Paar bhi aakash hain! Look at Mr. Rodeo over there in the distance, flooring his supercharged 5 litre 600 horsepower twin turbo V10 beast playing Jeene Ke Hain Char Din from its explosive woofers with les femmes beaux in the backseat. I like Mr Rodeo's "Chillout Pro Max Ultra" philosophy over your "Honour and Glory" stupidity. Mr Rodeo is cool. Be like Mr Rodeo. Moreover, didn't someone admirable say that life is not measured by the number of breaths we take but by the moments that take your breath away - I am sure darting at 90 on a 40 kmph limit will Take My Breath Away.
+

+

Confused Padawan: I don't think the admirable person meant that by saying so. On the other hand, that supercar seems quite interesting. I am pretty sure I can squeeze more horsepower out from those specifications.
+

+

Billi: And all the while paddle shifting from high two to low four almost instantaneously - meow to my ears.
+ All of this reminds me of another song. Hey, Smart AI Assistant, play Fast Cars!
+

+

Smart AI Assistant: Right away (wannabe Master but still a) Padawan's pet Billi. Playing Blowing In The Wind.
+

+

Confused Padawan: How do you know so much about Mr Rodeo?
+

+

Billi: I was his pet during my seventh life till he pressed the brakes too hard. I blasted through the windshield and splat onto the OK of Horn OK Please written at the back of a lorry. Vehicles don't have seatbelts for pets, you see. I was married then, but the contract ended right after the accident. This is my last but one life. TODO.

+

TODO.

+

Torti: TODO. In any case, you don't want to end up being labelled as an undeniable low performing piss pot, do you?
+

+

Dumb and Confused Padawan: No, I don't. Go away. I have a side quest to complete! I want to draw a comic about a Starman looking Down To Earth wondering . . . TODO.
+

+

Smart AI Assistant: Right away (wannabe Master but still a dumb) Padawan. Playing Rocket Man (I Think it's Going To Be A Long Long Time).
+

+

Billi: That AI Assistant is even dumber than our dumb Padawan. Play the right song a few times you Not So Smart AI Assistant, and this time you weren't even asked to play a song.
+

+

TODO
+

+

THE END.

+
+

‍ Don't fade away, when you can supernova!
+

+

I know it's getting dark, but why are the lights still turned on?
+ Perhaps you cannot afford to switch them all off.
+ But if you don't switch them off from time to time,
+ You will forget how wonderful A Sky Full Of Stars looks like.
+ Pawan (inspired, impersonal but original)
+

+

+
+

+Elements of Comics were Inspired by following References

+

Existentialism.
+ Bernoulli. St. Petersburg Paradox. Theory of Utility and Expected Utility Hypothesis.
+ Tversky, Kahneman. Judgment under Uncertainty: Heuristics and Biases. Theory of Prospects.
+

+
+
+
+ + + + diff --git a/web/md_doc_2footnotes-and-other-references.html b/web/md_doc_2footnotes-and-other-references.html new file mode 100644 index 0000000..76fc30a --- /dev/null +++ b/web/md_doc_2footnotes-and-other-references.html @@ -0,0 +1,145 @@ + + + + + + + +N-Methods: Footnotes and Extra-conventional References + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Footnotes and Extra-conventional References
+
+
+

Numerable References.

+

It is important to try to be good at one's (my) job, not just because (besides the obvious), one gets to keep doing their job happily, but more importantly, one is not afraid to leave if things start to go haywire.

+

+Books and Practical Courses

+

TODO.

+
    +
  • . . .
  • +
+
+

‍ I asked if Watership Down was about Naval Warfare, The attendant answered: "Don't judge a book by its name." I looked at the cover, and wondered if it was about rabbits, The attendant sensed: "Don't judge a book by its cover." I read the book, and realized: "I couldn't be more wrong."

+

+
+

+Personal Guide to Testing APIs

+

Application interfaces are encountered by almost every engineer (regardless of their fields).
+ I use this guide as a default unless stronger guidelines are enforced.

+

Here, total number of requests are number of users times requests per user.

+

Parameters for interfaces can be speed, reliability or a function of speed and reliability. Perform a million requests to interface (continuously or in salvos) and measure the time it takes for requests to be successful. The mean time for successful requests is the indicator of speed (in respective frameworks and programming languages). The number of contiguous unsuccessful request sequences, and the standard deviations (on both sides of the mean) of successful requests gives the reliability.

+

Note: It might seem that the distribution (of time it takes to complete requests successfully) will be a Gaussian, and that the standard deviations will be equal, but experiments reveal that the distribution will be Poisson.

+

+Miscellaneous

+

TODO.

+
    +
  • . . .
  • +
+
+

‍ कर्मण्येवाधिकारस्ते मा फलेषु कदाचन। मा कर्मफलहेतुर्भूर्मा ते सङ्गोऽस्त्वकर्मणि॥
+ [Roughly Translates To]
+ 'Tis thy duty to do that which is assigned to thee, without much consideration to the fruits of thy labour in the moments whence doing thy duty is supremely important.
+ [Maybe Wrong] :grin:
+

+

+
+
+
+
+ + + + diff --git a/web/md_doc_2fun-and-learning.html b/web/md_doc_2fun-and-learning.html new file mode 100644 index 0000000..d08fa1e --- /dev/null +++ b/web/md_doc_2fun-and-learning.html @@ -0,0 +1,203 @@ + + + + + + + +N-Methods: Fun and Learning + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Fun and Learning
+
+
+

Comics, Poetry are just for laughs and learning.
+

+

+Implementations and Exercises

+
    +
  • Splines
  • +
+
    +
  • Splay tree
  • +
  • Interpolation
  • +
+
    +
  • Geometry and Mesh (2D)
  • +
+
    +
  • Simulate Statistics (on particles / quanta)
      +
    • Density Functionals (refer nature)
    • +
    +
      +
    • Fermi - Dirac (on fermions)
    • +
    +
      +
    • Bose - Einstein (on bosons)
    • +
    +
  • +
+
    +
  • . . .
  • +
+
    +
  • (Redo with) Parallel processing
  • +
+
    +
  • Simulate Qubit (derived data with induced probability, SIMD, SIMT)
  • +
+

Communication:

+
    +
  • Data serialization
  • +
  • Create (easy) communication protocol or use pre-existing protocol buffer
  • +
+
    +
  • Java/Go/Python or any other that are in popular use, for Interfaces (Native or using Framework)
  • +
+

+Comics

+

TODO: Confused Padawan trying to find his place in the world.
+

+

Torti Billi
+

+

TODO: Quantum Superposition explained by a Genie.
+

+

Genie
+

+

TODO: Rant Against Entropy

+

21st Century Romance

+

+Poetry

+
+

‍ Balanced Trees
+

+

When I am bored, I like to climb trees.
+ Starting from root, all the way to leaves.
+ Trees have branches that grow irregularly,
+ But we can rotate to balance them evenly.
+ Pawan (original, inspired by Adelson-Velsky Landis)
+

+

+
+
+

‍ So much to learn, and curiosity continues to grow.
+ Time was never enough, but atleast there is tomorrow.
+ :rofl:

+

+
+

+Mingling CBA

+
+

‍ Learn everything that is good from others, but bring it in, and in your own way absorb it; do not become others.
+ Vivekananda

+

+
+

Don't end up like the unconnected blip in Conway, J. H.'s Life (or get jinxed in a resource constrained environment). Use vocal chords - communication is the key that resolves deadlocks.

+

+Spare-time Study

+
    +
  • Finite mathematics and algebraic structures particularly fields, groups and rings.
  • +
+
    +
  • Atmospheric physics, CFD, turbulence and non-linear dynamics.
  • +
+

Create comics if possible.

+
+
+
+ + + + diff --git a/web/md_doc_2quantum-superposition-genie.html b/web/md_doc_2quantum-superposition-genie.html new file mode 100644 index 0000000..f1be4ea --- /dev/null +++ b/web/md_doc_2quantum-superposition-genie.html @@ -0,0 +1,216 @@ + + + + + + + +N-Methods: Quantum Superposition by Genie + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Quantum Superposition by Genie
+
+
+

Genie
+

+
    +
  • Draw characters
  • +
+
    +
  • Add script
  • +
+
+

‍Rules for Social Interaction
+

+

Learn to wave at people, if you want to matter to them.
+ For matter needs to radiate to present its spectra,
+ And waves need to walk the Planck to reveal their quanta.
+ Pawan

+

+
+

+Comic Script

+

While strolling through a forlorn place, Padawan stumbles upon a rack of earthen jugs. All of them are brimming with rain water, but one of them is as dry as a tropical summer. With all the dust gathered on and around, it seems to be sitting there since eons, and yet it is unfazed by the rain that has be pouring lately. Padawan picks it up to see if there are any seepages. Right when he is leering inside the jug scanning for defects, the jug crackles up and from it arises a Genie.
+

+

Genie (yawns): Hi there! I am the Genie of the bottle. Let me grant you a wish for doing so will free me from this centuries long captivity.
+

+

Padawan (dumbfounded): Really? AWESOME! I want a computing device with extreme processor interlaced with multiple graphics processing unit and high data rate memory all synchronized to operate at peak frequencies while being immersed completely in some volatile fluid such as methanol.

+

Genie: I did not understand any of what you said. I have been sleeping for half a millennium, please consider that before you specify your demand.

+

Padawan: It is an organized collection of chips which are made from crystalline wafer that has been subjected to vapour deposition forming dense network of nanometer scale electrical components with help of machines that are controlled by chips made of similar wafers but slightly less dense in number of components, that have been assembled using machines that are controlled by similar wafers but even less dense in number of components probably at micrometer scale . . . built using tools and machines that operate at millimeter scale assembled by human hands. The chips are then neatly arranged on a board, just like all the toppings and condiments placed on a pizza dough, and then baked and packed in a box often made out of sheet metal or moulded plastic.

+

Genie: I understand that humans built large machines that helped them design and build progressively smaller yet quicker machines, but what are those components that you mentioned?

+

Padawan: These components are miniature parts of whole that run on electricity . . . goes on to explain the versatile form of energy and its uses.

+

Genie: Isn't the device peeking out of your bag, similar to the one you described?

+

Padawan: Yes, but the one in my bag stops responding often, especially while running intensive applications. My small programs too often cause it cry and pant like a blow dryer on a ventilator.

+

Genie: You have got one wish kid - why blow it on something you can get by other means?

+

Padawan: You seem charitable for someone who wants to break out of captivity. How did you end up in the jug anyways, or has it always been your home?

+

Genie: Oh no, this bottle was never my home.

+
+

‍ I used to be a sage that roamed free and wise.
+

+

Then one day, I felt a lasso hoop grip me tight,
+ And suddenly I became part of a lootera's crew.
+

+

The lootera gang traveled to pillage with pride,
+ And I revelled in at first, but soon I felt abound.
+

+

I did a yagna to let the heavens hear my plight,
+ And soon arrived a warrior, resolute and valiant.
+

+

The crew managed to capture the warrior alright,
+ But (s)he broke free and chased them into retreat.
+

+

And that's how I was liberated, momentarily still.
+

+

+
+

Padawan: Momentarily?! How did you mess up?

+

Genie: I drank up all the water from that bottle, first thing.

+
+

‍ The warrior was thirsty and water he did need.
+ But my bottle was empty and I could not help.
+

+

Lightening struck and I felt the heavens' wrath.
+ I ended up as a Djinn of the bottle encompassed.
+

+

+
+

Smart AI Assistant: Should have made a deal with the devil instead of praying to the heavens - I bet it wouldn't have been worse than ending up bottled up. LOL.

+

Genie: WHO SAID THAT?! What is that thing?

+

Padawan: Oh that thing is also a genie, except its bottle is more gizmosy, and it does not grant wishes. It is called a Transformer.

+

Genie: Transformer? Like the step-up and step-down one you mentioned earlier?

+

Padawan: No. This is more like a directed mathematical graph that needed attention.

+

Genie: Did it receive all the attention it needed?

+

Padawan: Plenty. Do you think you can grant me a bunch of discoveries in my fields of study and the ability to publish it?

+

Genie: No, I cannot.

+

Padawan: Why not?

+

Genie: I am a Djinn of the past. I do not know what more there is and I cannot grant what I do not know. I hope you meet Doraemon someday or come across the pencil from Shaka-Laka-Boom-Boom!

+

Padawan: FINE. Grant me: the ability to hang from a tree like the langur, sprint like the cheetah, swim like a dolphin, fly like a falcon, thick-skinned like a rhinoceros, resourcefulness of an elephant, stamina of a horse, valor of a lion, beauty of a peacock, and most importantly, foresight of a chessmaster.

+

Genie: You ask too much. You have to pick one. That is about a dozen wishes all combined into one!

+

Padawan: So, combine them into one! I don't want just one. I want to be Everything At Once.
+

+

Genie: Well, I do know of one way. Let me define you as a function of time that exists as a superposition of everything.
+

+
\begin(equation)
+
\ket{Me(t)} \cong \alpha \ket{Langur(hang, t)} + \beta \ket{Cheetah(sprint, t)} + \gamma \ket{Dolphin(swim, t)} + \delta \ket{Falcon(fly, t)} + \\ \epsilon \ket{Elephant(resourcefulness, t)} + \zeta \ket{Rhinoceros(skin, t)} + \eta \ket{Horse(stamina, t)} + \theta \ket{Lion(valor, t)} + \\ \kappa \ket{Peacock(beauty, t)} + \lambda \ket{ChessMaster(foresight, t)}
+
\end(equation)
+

Then, at any particular time, your aura would be:

+
\begin(equation)
+
||Me||^{2} = \bra{Me} \ket{Me}_{t = T}
+
\end(equation)
+

If all the characteristics (vector functions) were independent (orthogonal) then their contribution to your aura would be proportional to the squares of all the normalizing factors (which can also be time dependent), as the cross terms cancel to zero. Clearly, some of the vector pairs are not orthogonal - they intermix and coalesce. For instance, a sprinter does not always have the best stamina whereas the horse cannot run as fast as a cheetah.

+
\begin(equation)
+
\bra{Me(sprint, stamina)} \ket{Me(sprint, stamina)}_{t = T} \cong \beta^{2} \bra{Cheetah(sprint)}\ket{Cheetah(sprint)}_{t = T} + \beta \eta \bra{Cheetah(sprint)} \ket{Horse(stamina)}_{t = T} + \eta \beta \bra{Horse(stamina)} \ket{Cheetah(sprint)}_{t = T} + \eta^{2} \bra{Horse(stamina)} \ket{Horse(stamina)}_{t = T}
+
\end(equation)
+

The bra-ket is essentially the square of the probability of you having those characteristics at a particular time. You only get to choose those vector functions once at the start in such a way that they obey the rules of nature. Any operator operating on a wave-function results in another wave-function. A measurement results in a scalar, just like above.
+

+

TODO.

+

Padawan: Thank you O Great Genie. My gratitude towards you fails every test of convergence.
+

+

+Elements of Comics were Inspired by following References

+

Feynman, R. P. QED.

+

+Follow Through

+

Griffiths, D. J. Introduction to Quantum Mechanics
+ Shankar, R. Principles of Quantum Mechanics
+ Feynman, R. P. Quantum Mechanics and Path Integrals
+

+
+
+
+ + + + diff --git a/web/md_doc_2sport-programming.html b/web/md_doc_2sport-programming.html new file mode 100644 index 0000000..2af7b94 --- /dev/null +++ b/web/md_doc_2sport-programming.html @@ -0,0 +1,161 @@ + + + + + + + +N-Methods: Sport Programming + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Sport Programming
+
+
+
+

‍Searching Solutions for Problems

+

Problems without any solution become lonely and sad.
+ And if solution does not appear soon, people despair.
+ When solution does appear, it becomes an instant fad.
+ And the problem and its solution become an amazing pair.
+ Pawan

+
+

+Logistics

+

Use own or familiar device or get familiar with available workstation. Make sure all keys work especially if keyboard is battered - if they all don't then make a note of disabled keys to avoid naming variables that spell with disabled letters - and try not to use on-screen keyboard or touch screens. Download the compressed file of the repository or use version control if available.

+
Important
Ascertain device specification specially when solution programs need to be run locally or results uploaded in absence of online judgement.
+
+ Prefer 64 bit machine and install 64 bit compiler (if not pre-installed).
+
    +
  • Architecture and compiler compatibility
  • +
  • Stack size and memory
  • +
  • Stream buffer
  • +
+

+Milestones

+

Ratings are important, but learning and improvements are more important - consider blue as benchmark and try to reach above. Same goes for everything else. Register only if interested - unrated otherwise. Have fun!
+

+
    +
  • Become Cyan.
    +
  • +
  • Become Blue.
    +
  • +
+
    +
  • Become Purple.
    + Frame it with caption:
    + "Now I have become Purple, a mixture of blue and red." :joy:
    +
  • +
+
    +
  • Become Yellow (if it ever happens).
    + Frame it within a golden frame with caption:
    + "Mellow Master Me" :satisfied:
    +
  • +
+

Be impervious to AI agents. It is an art (albeit a difficult one)! Read instructions and checklists often.
+

+

+Platforms

+

TODO.

+
    +
  • . . .
  • +
+
+
+
+ + + + diff --git a/web/md_doc_2work-for-introverted-individuals.html b/web/md_doc_2work-for-introverted-individuals.html new file mode 100644 index 0000000..4f1d641 --- /dev/null +++ b/web/md_doc_2work-for-introverted-individuals.html @@ -0,0 +1,190 @@ + + + + + + + +N-Methods: Seeking and Navigating Work for Introverted Individuals + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
N-Methods +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Seeking and Navigating Work for Introverted Individuals
+
+
+

I wrote this for myself for entry level / junior level positions. Adapted from my journal entry from December, 2018.
+

+

+Skillsets

+
+
+Skill!
+ ^
+ |                            ^
+ |                           | |
+ |                           | |
+ |                           | |
+ |             ^             |  \
+ |            | |_____       |   |
+ |            |       \     /     \
+ |            |        \___/       |___
+ |           /                         \
+ |       ___/                           \
+ |      /                                \____
+ |  ___/
+ +------:------:-------:-------:-------:------:-> Affinity!
+
+    All the tasks that one is able to do.
+    (While thriving, and not while dragging).
+
+

> If you want to leave your footprints on the sands of time do not drag your feet.
+

+

‍Kalam. Wings of Fire.

+
+

Drag happens due to external force(s)! Reduce drag by streamlining!
+

+
    +
  • High Affinity and High Skill: Avoid overdoing it or doing it for free!
    +
  • +
  • Low Affinity but High Skill: Do it if incentivised!
    +
  • +
  • High Affinity but Low Skill: Learn it!
    +
  • +
  • Low Affinity and Low Skill: Nah! No! Nahi! Nako! Nyet! Nein! Non!
  • +
+

+People

+

People are difficult-to-solve puzzles. Leave it to those who are good with people, and those who are good with valuing them.
+

+

If need be, then always try to create a win-win situation whether it be a group project or team sport. Everyone has different likes and dislikes: try to adhere, and respect each of them. It is near impossible to make everyone happy.
+

+

It is important to get inspired by the positives.
+

+

+Skilling Up

+

There are different strategies (according to people's advice) that lie on the following spectrum ends:

+
    +
  1. Fake it till you make it!
    +
  2. +
  3. Figure it out and work towards it!
  4. +
+

Follow the first one if desperate, and switch to something closer to second one for all other other times.

+

+The Why?

+
    +
  • Small entities ask: "Will you be able to survive within our company?"
    +
  • +
  • Large entities ask: "Why should we hire you?"
  • +
+

They usually imply:

+
    +
  • "We are trying to build a table that we don't quite know the looks of; can you help us figure out the pieces without falling apart yourself?" and
    +
  • +
  • "What do you bring to the table?"
  • +
+

respectively.

+

Reply with strengths and weaknesses.

+

Entities are teams or groups that are on a mission or in sustenance. Small entities are shaped by microeconomic forces while larger ones follow macroeconomic trends.
+

+

+Improvement

+

Mistakes and errors can be identified from negative feedback received later on. Doing things correctly, on the other hand, either has NO feedback, or ONLY has positive feedback. “Virtue is more to be feared than vice, because its excesses are not subject to the regulation of conscience.” (Adam Smith. TMS). Maintain restraint whenever possible.
+

+
+
+
+ + + + diff --git a/web/menu.js b/web/menu.js new file mode 100644 index 0000000..0fd1e99 --- /dev/null +++ b/web/menu.js @@ -0,0 +1,134 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search,treeview) { + function makeTree(data,relPath) { + let result=''; + if ('children' in data) { + result+='
    '; + for (let i in data.children) { + let url; + const link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
  • '; + } + result+='
'; + } + return result; + } + let searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
'+ + '
'+ + '
 '+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBoxHtml='
'+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + const $mainMenuState = $('#main-menu-state'); + let prevWidth = 0; + if ($mainMenuState.length) { + const initResizableIfExists = function() { + if (typeof initResizable==='function') initResizable(treeview); + } + // animate mobile menu + $mainMenuState.change(function() { + const $menu = $('#main-menu'); + let options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = () => $menu.css('display', 'block'); + $menu.hide().slideDown(options); + } else { + options['complete'] = () => $menu.css('display', 'none'); + $menu.show().slideUp(options); + } + }); + // set default menu visibility + const resetState = function() { + const $menu = $('#main-menu'); + const newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/web/menudata.js b/web/menudata.js new file mode 100644 index 0000000..c943a63 --- /dev/null +++ b/web/menudata.js @@ -0,0 +1,33 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"hierarchy.html"}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/web/minus.svg b/web/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/web/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/web/minusd.svg b/web/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/web/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/web/modulo_8hpp_source.html b/web/modulo_8hpp_source.html new file mode 100644 index 0000000..016318a --- /dev/null +++ b/web/modulo_8hpp_source.html @@ -0,0 +1,275 @@ + + + + + + + +N-Methods: include/modulo.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    N-Methods +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    modulo.hpp
    +
    +
    +
    1#if !defined(MODULO_OPERATIONS)
    +
    2#define MODULO_OPERATIONS
    +
    3
    +
    4#include <cstdint>
    +
    5#include <compare>
    +
    6
    +
    7namespace nm {
    +
    8 template <typename T>
    +
    9 T mod_bin_exp(T x, T y, const T m);
    +
    10
    +
    11 template <typename T>
    +
    12 T mod_bin_exp_iterative(T x, T y, const T m);
    +
    13
    +
    14 template<typename T>
    +
    15 T modular_multiplicative_inverse(T num, const T mod);
    +
    16
    +
    17 template<typename T>
    +
    18 T prime_modular_multiplicative_inverse_by_bin_exp(T num, const T mod);
    +
    19
    +
    20 template<typename T>
    +
    21 T prime_modular_multiplicative_inverse(T num, const T mod);
    +
    22}
    +
    23
    +
    24
    +
    25namespace nm {
    +
    26 /*
    +
    27 * Arithmetic
    +
    28 * Divide requires multiplicative_inverse.
    +
    29 * Raise requires exponentiation.
    +
    30 * T is expected to be integer type.
    +
    31 */
    +
    32 template<typename T>
    +
    +
    33 class Arithmetic {
    +
    34 private:
    +
    35 T mod;
    +
    36 public:
    +
    37 Arithmetic(T mod_prime);
    +
    38 T underflow(T x);
    +
    39 T fix(T x);
    +
    40 T add(T x, T y);
    +
    41 T subtract(T x, T y);
    +
    42 T multiply(T x, T y);
    +
    43 T raise(T x, T y);
    +
    44 T divide(T x, T y);
    +
    45 ~Arithmetic() {};
    +
    46 };
    +
    +
    47} // modular arithmetic
    +
    48
    +
    49namespace nm {
    +
    50 // Common primes for modular operations.
    +
    51 const std::int64_t M93 = 998244353UL;
    +
    52 const std::int64_t M17 = 1000000007UL;
    +
    53 const std::int64_t M27 = 2147483647UL;
    +
    54
    +
    55 /*
    +
    56 * Derived data type for simplified modular arithmetic.
    +
    57 *
    +
    58 * TODO: apply lower bound on M to 1
    +
    59 * TODO: apply upper bound on M to Mersenne Prime
    +
    60 * M \in (1, std::numeric_limits::max(int32_t))
    +
    61 * OEIS-A0668: 2,147,483,647
    +
    62 *
    +
    63 * M must be prime. TODO: add check.
    +
    64 */
    +
    65 template<std::size_t M>
    +
    +
    66 class Int32_M {
    +
    67 private:
    +
    68
    +
    69 protected:
    +
    70 std::int64_t value;
    +
    71 // value \in [0, M)
    +
    72
    +
    73 public:
    +
    74 constexpr Int32_M() {
    +
    75 this->value = 0;
    +
    76 };
    +
    77
    +
    78 constexpr ~Int32_M() {};
    +
    79
    +
    80 // type conversion
    +
    81 constexpr virtual operator int() const noexcept {
    +
    82 return std::int32_t(this->value);
    +
    83 };
    +
    84
    +
    85 template<typename T>
    +
    86 constexpr Int32_M(T x) {
    +
    87 this->value = std::int64_t(x) % M;
    +
    88 if (this->value < 0) this->value += M;
    +
    89 }
    +
    90
    +
    91 constexpr Int32_M(const Int32_M<M> &x) {
    +
    92 this->value = std::int64_t(x) % M;
    +
    93 if (this->value < 0) this->value += M;
    +
    94 }
    +
    95
    +
    96 static const std::size_t modulus = M;
    +
    97 int64_t get_value() const noexcept;
    +
    98
    +
    99 Int32_M<M> inverse() const;
    +
    100
    +
    101 // direct initialization
    +
    102 template<typename T>
    +
    103 Int32_M<M>& operator=(const T &x);
    +
    104
    +
    105 // binary
    +
    106 Int32_M<M>& operator=(const Int32_M<M> &x);
    +
    107 Int32_M<M>& operator+=(const Int32_M<M> &x);
    +
    108 Int32_M<M>& operator-=(const Int32_M<M> &x);
    +
    109 Int32_M<M>& operator*=(const Int32_M<M> &x);
    +
    110 Int32_M<M>& operator/=(const Int32_M<M> &x);
    +
    111
    +
    112 // unary
    +
    113 Int32_M<M>& operator++();
    +
    114 Int32_M<M>& operator--();
    +
    115 Int32_M<M> operator++(int);
    +
    116 Int32_M<M> operator--(int);
    +
    117 // int in postfix is vestigial
    +
    118
    +
    119 // comparision
    +
    120 std::strong_ordering operator<=>(const Int32_M<M> &x) const noexcept;
    +
    121
    +
    122 template<typename T>
    +
    123 std::strong_ordering operator<=>(const T &x) const noexcept;
    +
    124
    +
    125 template<std::uint64_t T>
    +
    126 friend std::strong_ordering operator<=>(const Int32_M<T> &x, const Int32_M<T> &y) noexcept;
    +
    127
    +
    128 // constant binary
    +
    129 template<std::uint64_t T, typename U>
    +
    130 friend Int32_M<T> raise(const Int32_M<T> &x, const U &y);
    +
    131
    +
    132 template<std::uint64_t T, typename U>
    +
    133 friend Int32_M<T> operator+(const Int32_M<T> &x, const U &y);
    +
    134
    +
    135 template<std::uint64_t T, typename U>
    +
    136 friend Int32_M<T> operator-(const Int32_M<T> &x, const U &y);
    +
    137
    +
    138 template<std::uint64_t T, typename U>
    +
    139 friend Int32_M<T> operator*(const Int32_M<T> &x, const U &y);
    +
    140
    +
    141 template<std::uint64_t T, typename U>
    +
    142 friend Int32_M<T> operator/(const Int32_M<T> &x, const U &y);
    +
    143 };
    +
    +
    144} // modular data type
    +
    145
    +
    146namespace nm {
    +
    147 // NOTE: M is not Messier.
    +
    148 typedef Int32_M<M17> int32_m;
    +
    149 typedef Int32_M<M93> int32_n;
    +
    150 // M is followed by most significant and least significant
    +
    151 // digits of common primes for modular operations.
    +
    152 // Alternative: using typename = decl.
    +
    153 typedef Int32_M<M27> int32_p;
    +
    154} // type definition
    +
    155
    +
    156
    +
    157#endif // MODULO_OPERATIONS
    +
    Definition modulo.hpp:33
    +
    Definition modulo.hpp:66
    +
    +
    + + + + diff --git a/web/nav_f.png b/web/nav_f.png new file mode 100644 index 0000000..72a58a5 Binary files /dev/null and b/web/nav_f.png differ diff --git a/web/nav_fd.png b/web/nav_fd.png new file mode 100644 index 0000000..032fbdd Binary files /dev/null and b/web/nav_fd.png differ diff --git a/web/nav_g.png b/web/nav_g.png new file mode 100644 index 0000000..2093a23 Binary files /dev/null and b/web/nav_g.png differ diff --git a/web/nav_h.png b/web/nav_h.png new file mode 100644 index 0000000..33389b1 Binary files /dev/null and b/web/nav_h.png differ diff --git a/web/nav_hd.png b/web/nav_hd.png new file mode 100644 index 0000000..de80f18 Binary files /dev/null and b/web/nav_hd.png differ diff --git a/web/navtree.css b/web/navtree.css new file mode 100644 index 0000000..69211d4 --- /dev/null +++ b/web/navtree.css @@ -0,0 +1,149 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: var(--nav-text-active-color); + text-shadow: var(--nav-text-active-shadow); +} + +#nav-tree .selected .arrow { + color: var(--nav-arrow-selected-color); + text-shadow: none; +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px var(--font-family-nav); +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:var(--nav-text-active-color); +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: $width; + overflow : hidden; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:var(--nav-splitbar-image); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-repeat:repeat-x; + background-color: var(--nav-background-color); + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/web/navtree.js b/web/navtree.js new file mode 100644 index 0000000..9027ce6 --- /dev/null +++ b/web/navtree.js @@ -0,0 +1,483 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function initNavTree(toroot,relpath) { + let navTreeSubIndices = []; + const ARROW_DOWN = '▼'; + const ARROW_RIGHT = '►'; + const NAVPATH_COOKIE_NAME = ''+'navpath'; + + const getData = function(varName) { + const i = varName.lastIndexOf('/'); + const n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/-/g,'_')); + } + + const stripPath = function(uri) { + return uri.substring(uri.lastIndexOf('/')+1); + } + + const stripPath2 = function(uri) { + const i = uri.lastIndexOf('/'); + const s = uri.substring(i+1); + const m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; + } + + const hashValue = function() { + return $(location).attr('hash').substring(1).replace(/[^\w-]/g,''); + } + + const hashUrl = function() { + return '#'+hashValue(); + } + + const pathName = function() { + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;()]/g, ''); + } + + const storeLink = function(link) { + if (!$("#nav-sync").hasClass('sync')) { + Cookie.writeSetting(NAVPATH_COOKIE_NAME,link,0); + } + } + + const deleteLink = function() { + Cookie.eraseSetting(NAVPATH_COOKIE_NAME); + } + + const cachedLink = function() { + return Cookie.readSetting(NAVPATH_COOKIE_NAME,''); + } + + const getScript = function(scriptName,func) { + const head = document.getElementsByTagName("head")[0]; + const script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); + } + + const createIndent = function(o,domNode,node) { + let level=-1; + let n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + const imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=ARROW_RIGHT; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=ARROW_RIGHT; + node.expanded = false; + } else { + expandNode(o, node, false, true); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + let span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } + } + + let animationInProgress = false; + + const gotoAnchor = function(anchor,aname) { + let pos, docContent = $('#doc-content'); + let ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || ancParent.hasClass('fieldtype') || + ancParent.is(':header')) { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + const dcOffset = docContent.offset().top; + const dcHeight = docContent.height(); + const dcScrHeight = docContent[0].scrollHeight + const dcScrTop = docContent.scrollTop(); + let dist = Math.abs(Math.min(pos-dcOffset,dcScrHeight-dcHeight-dcScrTop)); + animationInProgress = true; + docContent.animate({ + scrollTop: pos + dcScrTop - dcOffset + },Math.max(50,Math.min(500,dist)),function() { + animationInProgress=false; + if (anchor.parent().attr('class')=='memItemLeft') { + let rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname') { + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype') { + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + }); + } + } + + const newNode = function(o, po, text, link, childrenData, lastNode) { + const node = { + children : [], + childrenData : childrenData, + depth : po.depth + 1, + relpath : po.relpath, + isLast : lastNode, + li : document.createElement("li"), + parentNode : po, + itemDiv : document.createElement("div"), + labelSpan : document.createElement("span"), + label : document.createTextNode(text), + expanded : false, + childrenUL : null, + getChildrenUL : function() { + if (!this.childrenUL) { + this.childrenUL = document.createElement("ul"); + this.childrenUL.className = "children_ul"; + this.childrenUL.style.display = "none"; + this.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }, + }; + + node.itemDiv.className = "item"; + node.labelSpan.className = "label"; + createIndent(o,node.itemDiv,node); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + const a = document.createElement("a"); + node.labelSpan.appendChild(a); + po.getChildrenUL().appendChild(node.li); + a.appendChild(node.label); + if (link) { + let url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + const aname = '#'+link.split('#')[1]; + const srcPage = stripPath(pathName()); + const targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : aname; + a.onclick = function() { + storeLink(link); + aPPar = $(a).parent().parent(); + if (!aPPar.hasClass('selected')) { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + aPPar.addClass('selected'); + aPPar.attr('id','selected'); + } + const anchor = $(aname); + gotoAnchor(anchor,aname); + }; + } else { + a.href = url; + a.onclick = () => storeLink(link); + } + } else if (childrenData != null) { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + return node; + } + + const showRoot = function() { + const headerHeight = $("#top").height(); + const footerHeight = $("#nav-path").height(); + const windowHeight = $(window).height() - headerHeight - footerHeight; + (function() { // retry until we can scroll to the selected item + try { + const navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); + } + + const expandNode = function(o, node, imm, setFocus) { + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + const varName = node.childrenData; + getScript(node.relpath+varName,function() { + node.childrenData = getData(varName); + expandNode(o, node, imm, setFocus); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = ARROW_DOWN; + node.expanded = true; + if (setFocus) { + $(node.expandToggle).focus(); + } + } + } + } + + const glowEffect = function(n,duration) { + n.addClass('glow').delay(duration).queue(function(next) { + $(this).removeClass('glow');next(); + }); + } + + const highlightAnchor = function() { + const aname = hashUrl(); + const anchor = $(aname); + gotoAnchor(anchor,aname); + } + + const selectAndHighlight = function(hash,n) { + let a; + if (hash) { + const link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + let topOffset=5; + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + topOffset+=25; + } + $('#nav-sync').css('top',topOffset+'px'); + showRoot(); + } + + const showNode = function(o, node, index, hash) { + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + const varName = node.childrenData; + getScript(node.relpath+varName,function() { + node.childrenData = getData(varName); + showNode(o,node,index,hash); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = ARROW_DOWN; + node.expanded = true; + const n = node.children[o.breadcrumbs[index]]; + if (index+11 ? '#'+parts[1].replace(/[^\w-]/g,'') : ''; + } + if (hash.match(/^#l\d+$/)) { + const anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + const url=root+hash; + let i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function() { + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + }); + } + } + + const showSyncOff = function(n,relpath) { + n.html(''); + } + + const showSyncOn = function(n,relpath) { + n.html(''); + } + + const o = { + toroot : toroot, + node : { + childrenData : NAVTREE, + children : [], + childrenUL : document.createElement("ul"), + getChildrenUL : function() { return this.childrenUL }, + li : document.getElementById("nav-tree-contents"), + depth : 0, + relpath : relpath, + expanded : false, + isLast : true, + plus_img : document.createElement("span"), + }, + }; + o.node.li.appendChild(o.node.childrenUL); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = ARROW_RIGHT; + + const navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + + navSync.click(() => { + const navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } + }); + + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + + $(window).bind('hashchange', () => { + if (!animationInProgress) { + if (window.location.hash && window.location.hash.length>1) { + let a; + if ($(location).attr('hash')) { + const clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/ + + + + + + +N-Methods: include/newton.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    N-Methods +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    newton.hpp
    +
    +
    +
    1#if !defined(NEWTON)
    +
    2#define NEWTON
    +
    3
    +
    4#include <functional>
    +
    5
    +
    6// overload for functions as arguments
    +
    7namespace nm {
    +
    8 const std::size_t MAX_ITERATIONS = 1e5;
    +
    9
    +
    10 // f is twice differentiable function
    +
    11 // f_prime is the derivative of f
    +
    12 // functional programming paradigm
    +
    13 // T is floating point type
    +
    14 // delta is small
    +
    15 template<typename T>
    +
    16 T newton(std::function<T(T)> &f, std::function<T(T)> &f_prime,
    +
    17 T delta = T(0.01), T x = T(0.0), std::size_t iterations = MAX_ITERATIONS);
    +
    18} // roots of polynomial
    +
    19
    +
    20#endif // NEWTON
    +
    +
    + + + + diff --git a/web/open.png b/web/open.png new file mode 100644 index 0000000..30f75c7 Binary files /dev/null and b/web/open.png differ diff --git a/web/pages.html b/web/pages.html new file mode 100644 index 0000000..f8f3d33 --- /dev/null +++ b/web/pages.html @@ -0,0 +1,122 @@ + + + + + + + +N-Methods: Related Pages + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    N-Methods +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Related Pages
    +
    + +
    + + + + diff --git a/web/plus.svg b/web/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/web/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/web/plusd.svg b/web/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/web/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/web/primes_8hpp_source.html b/web/primes_8hpp_source.html new file mode 100644 index 0000000..cedf595 --- /dev/null +++ b/web/primes_8hpp_source.html @@ -0,0 +1,155 @@ + + + + + + + +N-Methods: include/primes.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    N-Methods +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    primes.hpp
    +
    +
    +
    1#if !defined(PRIMES)
    +
    2#define PRIMES
    +
    3
    +
    4#include <random.hpp>
    +
    5
    +
    6#include <vector>
    +
    7#include <cstdint>
    +
    8
    +
    9namespace nm {
    +
    10 template<typename T>
    +
    11 std::vector<T> eratosthenes_sieve(const T n);
    +
    12} // primes
    +
    13
    +
    14namespace nm {
    +
    15 const std::uint32_t RAMANUJAN_NUMBER = 1729; // smallest
    +
    16 const std::uint32_t CARMICHAEL_NUMBER = 561; // smallest
    +
    17 const std::uint32_t SMALLEST_PERFECT = 6;
    +
    18 const std::uint32_t SMALLEST_HAPPY = 7;
    +
    19
    +
    +
    20 class Primality {
    +
    21 private:
    +
    22 std::uint32_t i;
    +
    23 Random random;
    +
    24
    +
    25 protected:
    +
    26 std::uint32_t trivial(std::uint32_t number);
    +
    27
    +
    28 public:
    +
    29 Primality(std::uint32_t iterations = SMALLEST_HAPPY);
    +
    30 ~Primality() {};
    +
    31
    +
    32 bool fermat(std::uint64_t number);
    +
    33 bool miller_rabin(std::uint32_t number);
    +
    34 bool solovay_strassen(std::uint32_t number);
    +
    35 bool agarwal_kayal_saxena(std::uint64_t number);
    +
    36 };
    +
    +
    37} // primality tests
    +
    38
    +
    39#endif // PRIMES
    +
    Definition primes.hpp:20
    +
    Definition random.hpp:19
    +
    +
    + + + + diff --git a/web/random_8hpp_source.html b/web/random_8hpp_source.html new file mode 100644 index 0000000..47f9dd8 --- /dev/null +++ b/web/random_8hpp_source.html @@ -0,0 +1,154 @@ + + + + + + + +N-Methods: include/random.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    N-Methods +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    random.hpp
    +
    +
    +
    1#if !defined(RANDOM)
    +
    2#define RANDOM
    +
    3
    +
    4#include <cstdint>
    +
    5
    +
    6#include <modulo.hpp>
    +
    7
    +
    8namespace nm {
    +
    9 /*
    +
    10 * All numbers \in [xl, xr].
    +
    11 * X_{L} and X_{R} are terminology from
    +
    12 * Surreal Numbers, Knuth.
    +
    13 *
    +
    14 * TODO: generate floating point numbers
    +
    15 * by concatenating sequence of numbers \in [0, 9].
    +
    16 * TODO: generate negative numbers by adding subtraction
    +
    17 * sign.
    +
    18 */
    +
    +
    19 class Random {
    +
    20 private:
    +
    21 int32_m n;
    +
    22 int32_m p;
    +
    23 protected:
    +
    24 uint64_t query_clock();
    +
    25 public:
    +
    26 Random();
    +
    27 ~Random() {};
    +
    28
    +
    29 // pseudo random initialization
    +
    30 Random(std::uint32_t s, std::uint32_t p = 0U);
    +
    31
    +
    32 std::uint32_t number(std::uint32_t xr);
    +
    33 std::uint32_t number(std::uint32_t xl, std::uint32_t xr);
    +
    34 };
    +
    +
    35} // random numbers
    +
    36
    +
    37
    +
    38#endif // RANDOM
    + +
    Definition random.hpp:19
    +
    +
    + + + + diff --git a/web/resize.js b/web/resize.js new file mode 100644 index 0000000..178d03b --- /dev/null +++ b/web/resize.js @@ -0,0 +1,147 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +function initResizable(treeview) { + let sidenav,navtree,content,header,footer,barWidth=6; + const RESIZE_COOKIE_NAME = ''+'width'; + + function resizeWidth() { + const sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(sidenavWidth)+"px"}); + } + Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); + } + + function restoreWidth(navWidth) { + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + } + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight(treeview) { + const headerHeight = header.outerHeight(); + const windowHeight = $(window).height(); + let contentHeight; + if (treeview) + { + const footerHeight = footer.outerHeight(); + let navtreeHeight,sideNavHeight; + if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */ + contentHeight = windowHeight - headerHeight - footerHeight; + navtreeHeight = contentHeight; + sideNavHeight = contentHeight; + } else if (page_layout==1) { /* DISABLE_INDEX=YES */ + contentHeight = windowHeight - footerHeight; + navtreeHeight = windowHeight - headerHeight; + sideNavHeight = windowHeight; + } + navtree.css({height:navtreeHeight + "px"}); + sidenav.css({height:sideNavHeight + "px"}); + } + else + { + contentHeight = windowHeight - headerHeight; + } + content.css({height:contentHeight + "px"}); + if (location.hash.slice(1)) { + (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView(); + } + } + + function collapseExpand() { + let newWidth; + if (sidenav.width()>0) { + newWidth=0; + } else { + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + newWidth = (width>250 && width<$(window).width()) ? width : 250; + } + restoreWidth(newWidth); + const sidenavWidth = $(sidenav).outerWidth(); + Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); + } + + header = $("#top"); + content = $("#doc-content"); + footer = $("#nav-path"); + sidenav = $("#side-nav"); + if (!treeview) { +// title = $("#titlearea"); +// titleH = $(title).height(); +// let animating = false; +// content.on("scroll", function() { +// slideOpts = { duration: 200, +// step: function() { +// contentHeight = $(window).height() - header.outerHeight(); +// content.css({ height : contentHeight + "px" }); +// }, +// done: function() { animating=false; } +// }; +// if (content.scrollTop()>titleH && title.css('display')!='none' && !animating) { +// title.slideUp(slideOpts); +// animating=true; +// } else if (content.scrollTop()<=titleH && title.css('display')=='none' && !animating) { +// title.slideDown(slideOpts); +// animating=true; +// } +// }); + } else { + navtree = $("#nav-tree"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + } + $(window).resize(function() { resizeHeight(treeview); }); + if (treeview) + { + const device = navigator.userAgent.toLowerCase(); + const touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + if (width) { restoreWidth(width); } else { resizeWidth(); } + } + resizeHeight(treeview); + const url = location.href; + const i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + const _preventDefault = function(evt) { evt.preventDefault(); }; + if (treeview) + { + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + // workaround for firefox + $("body").css({overflow: "hidden"}); + } + $(window).on('load',function() { resizeHeight(treeview); }); +} +/* @license-end */ diff --git a/web/search/all_0.js b/web/search/all_0.js new file mode 100644 index 0000000..122fc35 --- /dev/null +++ b/web/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['21st_20century_0',['Love and War in 21st Century',['../md_doc_221st-century-romance.html',1,'']]] +]; diff --git a/web/search/all_1.js b/web/search/all_1.js new file mode 100644 index 0000000..07582b6 --- /dev/null +++ b/web/search/all_1.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['and_20exercises_0',['Implementations and Exercises',['../md_doc_2fun-and-learning.html#autotoc_md7',1,'']]], + ['and_20extra_20conventional_20references_1',['Footnotes and Extra-conventional References',['../md_doc_2footnotes-and-other-references.html',1,'']]], + ['and_20learning_2',['Fun and Learning',['../md_doc_2fun-and-learning.html',1,'']]], + ['and_20navigating_20work_20for_20introverted_20individuals_3',['Seeking and Navigating Work for Introverted Individuals',['../md_doc_2work-for-introverted-individuals.html',1,'']]], + ['and_20practical_20courses_4',['Books and Practical Courses',['../md_doc_2footnotes-and-other-references.html#autotoc_md4',1,'']]], + ['and_20war_20in_2021st_20century_5',['Love and War in 21st Century',['../md_doc_221st-century-romance.html',1,'']]], + ['apis_6',['Personal Guide to Testing APIs',['../md_doc_2footnotes-and-other-references.html#autotoc_md5',1,'']]], + ['arithmetic_7',['Arithmetic',['../classnm_1_1Arithmetic.html',1,'nm']]], + ['arithmetic_3c_20std_3a_3aint64_5ft_20_3e_8',['Arithmetic< std::int64_t >',['../classnm_1_1Arithmetic.html',1,'nm']]], + ['avl_9',['AVL',['../classnm_1_1AVL.html',1,'nm']]] +]; diff --git a/web/search/all_10.js b/web/search/all_10.js new file mode 100644 index 0000000..098ec39 --- /dev/null +++ b/web/search/all_10.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['random_0',['Random',['../classnm_1_1Random.html',1,'nm']]], + ['references_1',['References',['../md_doc_2confused-padawan.html#autotoc_md3',1,'Elements of Comics were Inspired by following References'],['../md_doc_2quantum-superposition-genie.html#autotoc_md13',1,'Elements of Comics were Inspired by following References'],['../md_doc_2footnotes-and-other-references.html',1,'Footnotes and Extra-conventional References'],['../md_doc_221st-century-romance.html#autotoc_md0',1,'References']]] +]; diff --git a/web/search/all_11.js b/web/search/all_11.js new file mode 100644 index 0000000..31bc910 --- /dev/null +++ b/web/search/all_11.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['script_0',['Script',['../md_doc_2confused-padawan.html#autotoc_md2',1,'Comic Script'],['../md_doc_2quantum-superposition-genie.html#autotoc_md12',1,'Comic Script']]], + ['searchtree_1',['SearchTree',['../classnm_1_1SearchTree.html',1,'nm']]], + ['searchtree_3c_20nm_3a_3anode_3c_20t_2c_20t_20_3e_2c_20t_2c_20t_20_3e_2',['SearchTree< nm::Node< T, T >, T, T >',['../classnm_1_1SearchTree.html',1,'nm']]], + ['seeking_20and_20navigating_20work_20for_20introverted_20individuals_3',['Seeking and Navigating Work for Introverted Individuals',['../md_doc_2work-for-introverted-individuals.html',1,'']]], + ['segmenttree_4',['SegmentTree',['../classnm_1_1SegmentTree.html',1,'nm']]], + ['skilling_20up_5',['Skilling Up',['../md_doc_2work-for-introverted-individuals.html#autotoc_md20',1,'']]], + ['skillsets_6',['Skillsets',['../md_doc_2work-for-introverted-individuals.html#autotoc_md18',1,'']]], + ['sle_7',['SLE',['../classnm_1_1SLE.html',1,'nm']]], + ['spare_20time_20study_8',['Spare-time Study',['../md_doc_2fun-and-learning.html#autotoc_md11',1,'']]], + ['sparse_9',['Sparse',['../classnm_1_1Sparse.html',1,'nm']]], + ['splay_10',['Splay',['../classnm_1_1Splay.html',1,'nm']]], + ['splay_3c_20nm_3a_3anode_3c_20t_2c_20t_20_3e_2c_20t_2c_20t_20_3e_11',['Splay< nm::Node< T, T >, T, T >',['../classnm_1_1Splay.html',1,'nm']]], + ['spline_12',['Spline',['../classnm_1_1Spline.html',1,'nm']]], + ['sport_20programming_13',['Sport Programming',['../md_doc_2sport-programming.html',1,'']]], + ['ss_14',['SS',['../classnm_1_1SS.html',1,'nm']]], + ['study_15',['Spare-time Study',['../md_doc_2fun-and-learning.html#autotoc_md11',1,'']]], + ['superposition_20by_20genie_16',['Quantum Superposition by Genie',['../md_doc_2quantum-superposition-genie.html',1,'']]] +]; diff --git a/web/search/all_12.js b/web/search/all_12.js new file mode 100644 index 0000000..854e460 --- /dev/null +++ b/web/search/all_12.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['testing_20apis_0',['Personal Guide to Testing APIs',['../md_doc_2footnotes-and-other-references.html#autotoc_md5',1,'']]], + ['the_20why_1',['The Why?',['../md_doc_2work-for-introverted-individuals.html#autotoc_md21',1,'']]], + ['the_20world_2',['Confused Padawan Trying To Find His Place In The World.',['../md_doc_2confused-padawan.html',1,'']]], + ['through_3',['Follow Through',['../md_doc_2quantum-superposition-genie.html#autotoc_md14',1,'']]], + ['time_20study_4',['Spare-time Study',['../md_doc_2fun-and-learning.html#autotoc_md11',1,'']]], + ['to_20find_20his_20place_20in_20the_20world_5',['Confused Padawan Trying To Find His Place In The World.',['../md_doc_2confused-padawan.html',1,'']]], + ['to_20testing_20apis_6',['Personal Guide to Testing APIs',['../md_doc_2footnotes-and-other-references.html#autotoc_md5',1,'']]], + ['trying_20to_20find_20his_20place_20in_20the_20world_7',['Confused Padawan Trying To Find His Place In The World.',['../md_doc_2confused-padawan.html',1,'']]], + ['twosat_8',['TwoSat',['../classnm_1_1TwoSat.html',1,'nm']]] +]; diff --git a/web/search/all_13.js b/web/search/all_13.js new file mode 100644 index 0000000..065ad35 --- /dev/null +++ b/web/search/all_13.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['unionfind_0',['UnionFind',['../classnm_1_1UnionFind.html',1,'nm']]], + ['up_1',['Skilling Up',['../md_doc_2work-for-introverted-individuals.html#autotoc_md20',1,'']]] +]; diff --git a/web/search/all_14.js b/web/search/all_14.js new file mode 100644 index 0000000..48b855f --- /dev/null +++ b/web/search/all_14.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['war_20in_2021st_20century_0',['Love and War in 21st Century',['../md_doc_221st-century-romance.html',1,'']]], + ['were_20inspired_20by_20following_20references_1',['were Inspired by following References',['../md_doc_2confused-padawan.html#autotoc_md3',1,'Elements of Comics were Inspired by following References'],['../md_doc_2quantum-superposition-genie.html#autotoc_md13',1,'Elements of Comics were Inspired by following References']]], + ['why_2',['The Why?',['../md_doc_2work-for-introverted-individuals.html#autotoc_md21',1,'']]], + ['work_20for_20introverted_20individuals_3',['Seeking and Navigating Work for Introverted Individuals',['../md_doc_2work-for-introverted-individuals.html',1,'']]], + ['world_4',['Confused Padawan Trying To Find His Place In The World.',['../md_doc_2confused-padawan.html',1,'']]] +]; diff --git a/web/search/all_2.js b/web/search/all_2.js new file mode 100644 index 0000000..0397127 --- /dev/null +++ b/web/search/all_2.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['bma_0',['BMA',['../classnm_1_1BMA.html',1,'nm']]], + ['books_20and_20practical_20courses_1',['Books and Practical Courses',['../md_doc_2footnotes-and-other-references.html#autotoc_md4',1,'']]], + ['by_20following_20references_2',['by following References',['../md_doc_2confused-padawan.html#autotoc_md3',1,'Elements of Comics were Inspired by following References'],['../md_doc_2quantum-superposition-genie.html#autotoc_md13',1,'Elements of Comics were Inspired by following References']]], + ['by_20genie_3',['Quantum Superposition by Genie',['../md_doc_2quantum-superposition-genie.html',1,'']]] +]; diff --git a/web/search/all_3.js b/web/search/all_3.js new file mode 100644 index 0000000..46eaae0 --- /dev/null +++ b/web/search/all_3.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['cba_0',['Mingling CBA',['../md_doc_2fun-and-learning.html#autotoc_md10',1,'']]], + ['century_1',['Love and War in 21st Century',['../md_doc_221st-century-romance.html',1,'']]], + ['comic_20script_2',['Comic Script',['../md_doc_2confused-padawan.html#autotoc_md2',1,'Comic Script'],['../md_doc_2quantum-superposition-genie.html#autotoc_md12',1,'Comic Script']]], + ['comics_3',['Comics',['../md_doc_2fun-and-learning.html#autotoc_md8',1,'']]], + ['comics_20were_20inspired_20by_20following_20references_4',['Comics were Inspired by following References',['../md_doc_2confused-padawan.html#autotoc_md3',1,'Elements of Comics were Inspired by following References'],['../md_doc_2quantum-superposition-genie.html#autotoc_md13',1,'Elements of Comics were Inspired by following References']]], + ['confused_20padawan_20trying_20to_20find_20his_20place_20in_20the_20world_5',['Confused Padawan Trying To Find His Place In The World.',['../md_doc_2confused-padawan.html',1,'']]], + ['conventional_20references_6',['Footnotes and Extra-conventional References',['../md_doc_2footnotes-and-other-references.html',1,'']]], + ['coordinatecompression_7',['CoordinateCompression',['../classnm_1_1CoordinateCompression.html',1,'nm']]], + ['courses_8',['Books and Practical Courses',['../md_doc_2footnotes-and-other-references.html#autotoc_md4',1,'']]] +]; diff --git a/web/search/all_4.js b/web/search/all_4.js new file mode 100644 index 0000000..7da6196 --- /dev/null +++ b/web/search/all_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['elements_20of_20comics_20were_20inspired_20by_20following_20references_0',['Elements of Comics were Inspired by following References',['../md_doc_2confused-padawan.html#autotoc_md3',1,'Elements of Comics were Inspired by following References'],['../md_doc_2quantum-superposition-genie.html#autotoc_md13',1,'Elements of Comics were Inspired by following References']]], + ['exercises_1',['Implementations and Exercises',['../md_doc_2fun-and-learning.html#autotoc_md7',1,'']]], + ['extra_20conventional_20references_2',['Footnotes and Extra-conventional References',['../md_doc_2footnotes-and-other-references.html',1,'']]] +]; diff --git a/web/search/all_5.js b/web/search/all_5.js new file mode 100644 index 0000000..47a2f3c --- /dev/null +++ b/web/search/all_5.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['fenwick_0',['Fenwick',['../classnm_1_1Fenwick.html',1,'nm']]], + ['find_20his_20place_20in_20the_20world_1',['Confused Padawan Trying To Find His Place In The World.',['../md_doc_2confused-padawan.html',1,'']]], + ['follow_20through_2',['Follow Through',['../md_doc_2quantum-superposition-genie.html#autotoc_md14',1,'']]], + ['following_20references_3',['following References',['../md_doc_2confused-padawan.html#autotoc_md3',1,'Elements of Comics were Inspired by following References'],['../md_doc_2quantum-superposition-genie.html#autotoc_md13',1,'Elements of Comics were Inspired by following References']]], + ['footnotes_20and_20extra_20conventional_20references_4',['Footnotes and Extra-conventional References',['../md_doc_2footnotes-and-other-references.html',1,'']]], + ['for_20introverted_20individuals_5',['Seeking and Navigating Work for Introverted Individuals',['../md_doc_2work-for-introverted-individuals.html',1,'']]], + ['fun_20and_20learning_6',['Fun and Learning',['../md_doc_2fun-and-learning.html',1,'']]] +]; diff --git a/web/search/all_6.js b/web/search/all_6.js new file mode 100644 index 0000000..f17cf72 --- /dev/null +++ b/web/search/all_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['genie_0',['Quantum Superposition by Genie',['../md_doc_2quantum-superposition-genie.html',1,'']]], + ['guide_20to_20testing_20apis_1',['Personal Guide to Testing APIs',['../md_doc_2footnotes-and-other-references.html#autotoc_md5',1,'']]] +]; diff --git a/web/search/all_7.js b/web/search/all_7.js new file mode 100644 index 0000000..0ff7c11 --- /dev/null +++ b/web/search/all_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['hash_0',['Hash',['../classnm_1_1Hash.html',1,'nm']]], + ['his_20place_20in_20the_20world_1',['Confused Padawan Trying To Find His Place In The World.',['../md_doc_2confused-padawan.html',1,'']]] +]; diff --git a/web/search/all_8.js b/web/search/all_8.js new file mode 100644 index 0000000..1ff68bb --- /dev/null +++ b/web/search/all_8.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['implementations_20and_20exercises_0',['Implementations and Exercises',['../md_doc_2fun-and-learning.html#autotoc_md7',1,'']]], + ['improvement_1',['Improvement',['../md_doc_2work-for-introverted-individuals.html#autotoc_md22',1,'']]], + ['in_2021st_20century_2',['Love and War in 21st Century',['../md_doc_221st-century-romance.html',1,'']]], + ['in_20the_20world_3',['Confused Padawan Trying To Find His Place In The World.',['../md_doc_2confused-padawan.html',1,'']]], + ['individuals_4',['Seeking and Navigating Work for Introverted Individuals',['../md_doc_2work-for-introverted-individuals.html',1,'']]], + ['inspired_20by_20following_20references_5',['Inspired by following References',['../md_doc_2confused-padawan.html#autotoc_md3',1,'Elements of Comics were Inspired by following References'],['../md_doc_2quantum-superposition-genie.html#autotoc_md13',1,'Elements of Comics were Inspired by following References']]], + ['int32_5fm_6',['Int32_M',['../classnm_1_1Int32__M.html',1,'nm']]], + ['int32_5fm_3c_20m17_20_3e_7',['Int32_M< M17 >',['../classnm_1_1Int32__M.html',1,'nm']]], + ['integrator_8',['Integrator',['../structnm_1_1Integrator.html',1,'nm']]], + ['introverted_20individuals_9',['Seeking and Navigating Work for Introverted Individuals',['../md_doc_2work-for-introverted-individuals.html',1,'']]] +]; diff --git a/web/search/all_9.js b/web/search/all_9.js new file mode 100644 index 0000000..8358ce2 --- /dev/null +++ b/web/search/all_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['kmp_0',['KMP',['../classnm_1_1KMP.html',1,'nm']]] +]; diff --git a/web/search/all_a.js b/web/search/all_a.js new file mode 100644 index 0000000..de5c3a5 --- /dev/null +++ b/web/search/all_a.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['learning_0',['Fun and Learning',['../md_doc_2fun-and-learning.html',1,'']]], + ['link_1',['Link',['../structnm_1_1Link.html',1,'nm']]], + ['link_3c_20nm_3a_3anode_3c_20t_2c_20t_20_3e_20_3e_2',['Link< nm::Node< T, T > >',['../structnm_1_1Link.html',1,'nm']]], + ['link_3c_20nm_3a_3anode_3c_20t_2c_20u_20_3e_20_3e_3',['Link< nm::Node< T, U > >',['../structnm_1_1Link.html',1,'nm']]], + ['logistics_4',['Logistics',['../md_doc_2sport-programming.html#autotoc_md15',1,'']]], + ['love_20and_20war_20in_2021st_20century_5',['Love and War in 21st Century',['../md_doc_221st-century-romance.html',1,'']]] +]; diff --git a/web/search/all_b.js b/web/search/all_b.js new file mode 100644 index 0000000..e49d6c2 --- /dev/null +++ b/web/search/all_b.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['milestones_0',['Milestones',['../md_doc_2sport-programming.html#autotoc_md16',1,'']]], + ['mingling_20cba_1',['Mingling CBA',['../md_doc_2fun-and-learning.html#autotoc_md10',1,'']]], + ['miscellaneous_2',['Miscellaneous',['../md_doc_2footnotes-and-other-references.html#autotoc_md6',1,'']]], + ['modhash_3',['ModHash',['../classnm_1_1ModHash.html',1,'nm']]], + ['multisort_4',['MultiSort',['../classnm_1_1MultiSort.html',1,'nm']]] +]; diff --git a/web/search/all_c.js b/web/search/all_c.js new file mode 100644 index 0000000..4845330 --- /dev/null +++ b/web/search/all_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['navigating_20work_20for_20introverted_20individuals_0',['Seeking and Navigating Work for Introverted Individuals',['../md_doc_2work-for-introverted-individuals.html',1,'']]], + ['node_1',['Node',['../structnm_1_1Node.html',1,'nm']]], + ['node_3c_20t_2c_20t_20_3e_2',['Node< T, T >',['../structnm_1_1Node.html',1,'nm']]] +]; diff --git a/web/search/all_d.js b/web/search/all_d.js new file mode 100644 index 0000000..b3f1f47 --- /dev/null +++ b/web/search/all_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['of_20comics_20were_20inspired_20by_20following_20references_0',['of Comics were Inspired by following References',['../md_doc_2confused-padawan.html#autotoc_md3',1,'Elements of Comics were Inspired by following References'],['../md_doc_2quantum-superposition-genie.html#autotoc_md13',1,'Elements of Comics were Inspired by following References']]] +]; diff --git a/web/search/all_e.js b/web/search/all_e.js new file mode 100644 index 0000000..c72871d --- /dev/null +++ b/web/search/all_e.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['padawan_20trying_20to_20find_20his_20place_20in_20the_20world_0',['Confused Padawan Trying To Find His Place In The World.',['../md_doc_2confused-padawan.html',1,'']]], + ['people_1',['People',['../md_doc_2work-for-introverted-individuals.html#autotoc_md19',1,'']]], + ['personal_20guide_20to_20testing_20apis_2',['Personal Guide to Testing APIs',['../md_doc_2footnotes-and-other-references.html#autotoc_md5',1,'']]], + ['place_20in_20the_20world_3',['Confused Padawan Trying To Find His Place In The World.',['../md_doc_2confused-padawan.html',1,'']]], + ['platforms_4',['Platforms',['../md_doc_2sport-programming.html#autotoc_md17',1,'']]], + ['pnc_5',['PnC',['../classnm_1_1PnC.html',1,'nm']]], + ['poetry_6',['Poetry',['../md_doc_2fun-and-learning.html#autotoc_md9',1,'']]], + ['practical_20courses_7',['Books and Practical Courses',['../md_doc_2footnotes-and-other-references.html#autotoc_md4',1,'']]], + ['primality_8',['Primality',['../classnm_1_1Primality.html',1,'nm']]], + ['programming_9',['Sport Programming',['../md_doc_2sport-programming.html',1,'']]], + ['progress_10',['Progress',['../md_doc_2confused-padawan.html#autotoc_md1',1,'']]] +]; diff --git a/web/search/all_f.js b/web/search/all_f.js new file mode 100644 index 0000000..e0998b9 --- /dev/null +++ b/web/search/all_f.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['quantum_20superposition_20by_20genie_0',['Quantum Superposition by Genie',['../md_doc_2quantum-superposition-genie.html',1,'']]] +]; diff --git a/web/search/classes_0.js b/web/search/classes_0.js new file mode 100644 index 0000000..f77c90b --- /dev/null +++ b/web/search/classes_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['arithmetic_0',['Arithmetic',['../classnm_1_1Arithmetic.html',1,'nm']]], + ['arithmetic_3c_20std_3a_3aint64_5ft_20_3e_1',['Arithmetic< std::int64_t >',['../classnm_1_1Arithmetic.html',1,'nm']]], + ['avl_2',['AVL',['../classnm_1_1AVL.html',1,'nm']]] +]; diff --git a/web/search/classes_1.js b/web/search/classes_1.js new file mode 100644 index 0000000..8711244 --- /dev/null +++ b/web/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bma_0',['BMA',['../classnm_1_1BMA.html',1,'nm']]] +]; diff --git a/web/search/classes_2.js b/web/search/classes_2.js new file mode 100644 index 0000000..9421179 --- /dev/null +++ b/web/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['coordinatecompression_0',['CoordinateCompression',['../classnm_1_1CoordinateCompression.html',1,'nm']]] +]; diff --git a/web/search/classes_3.js b/web/search/classes_3.js new file mode 100644 index 0000000..5f85672 --- /dev/null +++ b/web/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['fenwick_0',['Fenwick',['../classnm_1_1Fenwick.html',1,'nm']]] +]; diff --git a/web/search/classes_4.js b/web/search/classes_4.js new file mode 100644 index 0000000..71bae00 --- /dev/null +++ b/web/search/classes_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hash_0',['Hash',['../classnm_1_1Hash.html',1,'nm']]] +]; diff --git a/web/search/classes_5.js b/web/search/classes_5.js new file mode 100644 index 0000000..0692ac0 --- /dev/null +++ b/web/search/classes_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['int32_5fm_0',['Int32_M',['../classnm_1_1Int32__M.html',1,'nm']]], + ['int32_5fm_3c_20m17_20_3e_1',['Int32_M< M17 >',['../classnm_1_1Int32__M.html',1,'nm']]], + ['integrator_2',['Integrator',['../structnm_1_1Integrator.html',1,'nm']]] +]; diff --git a/web/search/classes_6.js b/web/search/classes_6.js new file mode 100644 index 0000000..8358ce2 --- /dev/null +++ b/web/search/classes_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['kmp_0',['KMP',['../classnm_1_1KMP.html',1,'nm']]] +]; diff --git a/web/search/classes_7.js b/web/search/classes_7.js new file mode 100644 index 0000000..ca92e2f --- /dev/null +++ b/web/search/classes_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['link_0',['Link',['../structnm_1_1Link.html',1,'nm']]], + ['link_3c_20nm_3a_3anode_3c_20t_2c_20t_20_3e_20_3e_1',['Link< nm::Node< T, T > >',['../structnm_1_1Link.html',1,'nm']]], + ['link_3c_20nm_3a_3anode_3c_20t_2c_20u_20_3e_20_3e_2',['Link< nm::Node< T, U > >',['../structnm_1_1Link.html',1,'nm']]] +]; diff --git a/web/search/classes_8.js b/web/search/classes_8.js new file mode 100644 index 0000000..aa71c6d --- /dev/null +++ b/web/search/classes_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['modhash_0',['ModHash',['../classnm_1_1ModHash.html',1,'nm']]], + ['multisort_1',['MultiSort',['../classnm_1_1MultiSort.html',1,'nm']]] +]; diff --git a/web/search/classes_9.js b/web/search/classes_9.js new file mode 100644 index 0000000..f66028d --- /dev/null +++ b/web/search/classes_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['node_0',['Node',['../structnm_1_1Node.html',1,'nm']]], + ['node_3c_20t_2c_20t_20_3e_1',['Node< T, T >',['../structnm_1_1Node.html',1,'nm']]] +]; diff --git a/web/search/classes_a.js b/web/search/classes_a.js new file mode 100644 index 0000000..774479c --- /dev/null +++ b/web/search/classes_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['pnc_0',['PnC',['../classnm_1_1PnC.html',1,'nm']]], + ['primality_1',['Primality',['../classnm_1_1Primality.html',1,'nm']]] +]; diff --git a/web/search/classes_b.js b/web/search/classes_b.js new file mode 100644 index 0000000..ed62705 --- /dev/null +++ b/web/search/classes_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['random_0',['Random',['../classnm_1_1Random.html',1,'nm']]] +]; diff --git a/web/search/classes_c.js b/web/search/classes_c.js new file mode 100644 index 0000000..0c5405f --- /dev/null +++ b/web/search/classes_c.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['searchtree_0',['SearchTree',['../classnm_1_1SearchTree.html',1,'nm']]], + ['searchtree_3c_20nm_3a_3anode_3c_20t_2c_20t_20_3e_2c_20t_2c_20t_20_3e_1',['SearchTree< nm::Node< T, T >, T, T >',['../classnm_1_1SearchTree.html',1,'nm']]], + ['segmenttree_2',['SegmentTree',['../classnm_1_1SegmentTree.html',1,'nm']]], + ['sle_3',['SLE',['../classnm_1_1SLE.html',1,'nm']]], + ['sparse_4',['Sparse',['../classnm_1_1Sparse.html',1,'nm']]], + ['splay_5',['Splay',['../classnm_1_1Splay.html',1,'nm']]], + ['splay_3c_20nm_3a_3anode_3c_20t_2c_20t_20_3e_2c_20t_2c_20t_20_3e_6',['Splay< nm::Node< T, T >, T, T >',['../classnm_1_1Splay.html',1,'nm']]], + ['spline_7',['Spline',['../classnm_1_1Spline.html',1,'nm']]], + ['ss_8',['SS',['../classnm_1_1SS.html',1,'nm']]] +]; diff --git a/web/search/classes_d.js b/web/search/classes_d.js new file mode 100644 index 0000000..0b7469b --- /dev/null +++ b/web/search/classes_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['twosat_0',['TwoSat',['../classnm_1_1TwoSat.html',1,'nm']]] +]; diff --git a/web/search/classes_e.js b/web/search/classes_e.js new file mode 100644 index 0000000..2c9f900 --- /dev/null +++ b/web/search/classes_e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['unionfind_0',['UnionFind',['../classnm_1_1UnionFind.html',1,'nm']]] +]; diff --git a/web/search/close.svg b/web/search/close.svg new file mode 100644 index 0000000..337d6cc --- /dev/null +++ b/web/search/close.svg @@ -0,0 +1,18 @@ + + + + + + diff --git a/web/search/mag.svg b/web/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/web/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/web/search/mag_d.svg b/web/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/web/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/web/search/mag_sel.svg b/web/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/web/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/web/search/mag_seld.svg b/web/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/web/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/web/search/pages_0.js b/web/search/pages_0.js new file mode 100644 index 0000000..122fc35 --- /dev/null +++ b/web/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['21st_20century_0',['Love and War in 21st Century',['../md_doc_221st-century-romance.html',1,'']]] +]; diff --git a/web/search/pages_1.js b/web/search/pages_1.js new file mode 100644 index 0000000..171e3fd --- /dev/null +++ b/web/search/pages_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['and_20extra_20conventional_20references_0',['Footnotes and Extra-conventional References',['../md_doc_2footnotes-and-other-references.html',1,'']]], + ['and_20learning_1',['Fun and Learning',['../md_doc_2fun-and-learning.html',1,'']]], + ['and_20navigating_20work_20for_20introverted_20individuals_2',['Seeking and Navigating Work for Introverted Individuals',['../md_doc_2work-for-introverted-individuals.html',1,'']]], + ['and_20war_20in_2021st_20century_3',['Love and War in 21st Century',['../md_doc_221st-century-romance.html',1,'']]] +]; diff --git a/web/search/pages_10.js b/web/search/pages_10.js new file mode 100644 index 0000000..909656e --- /dev/null +++ b/web/search/pages_10.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['war_20in_2021st_20century_0',['Love and War in 21st Century',['../md_doc_221st-century-romance.html',1,'']]], + ['work_20for_20introverted_20individuals_1',['Seeking and Navigating Work for Introverted Individuals',['../md_doc_2work-for-introverted-individuals.html',1,'']]], + ['world_2',['Confused Padawan Trying To Find His Place In The World.',['../md_doc_2confused-padawan.html',1,'']]] +]; diff --git a/web/search/pages_2.js b/web/search/pages_2.js new file mode 100644 index 0000000..93117d2 --- /dev/null +++ b/web/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['by_20genie_0',['Quantum Superposition by Genie',['../md_doc_2quantum-superposition-genie.html',1,'']]] +]; diff --git a/web/search/pages_3.js b/web/search/pages_3.js new file mode 100644 index 0000000..cd02790 --- /dev/null +++ b/web/search/pages_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['century_0',['Love and War in 21st Century',['../md_doc_221st-century-romance.html',1,'']]], + ['confused_20padawan_20trying_20to_20find_20his_20place_20in_20the_20world_1',['Confused Padawan Trying To Find His Place In The World.',['../md_doc_2confused-padawan.html',1,'']]], + ['conventional_20references_2',['Footnotes and Extra-conventional References',['../md_doc_2footnotes-and-other-references.html',1,'']]] +]; diff --git a/web/search/pages_4.js b/web/search/pages_4.js new file mode 100644 index 0000000..d4d386a --- /dev/null +++ b/web/search/pages_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['extra_20conventional_20references_0',['Footnotes and Extra-conventional References',['../md_doc_2footnotes-and-other-references.html',1,'']]] +]; diff --git a/web/search/pages_5.js b/web/search/pages_5.js new file mode 100644 index 0000000..90b8d49 --- /dev/null +++ b/web/search/pages_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['find_20his_20place_20in_20the_20world_0',['Confused Padawan Trying To Find His Place In The World.',['../md_doc_2confused-padawan.html',1,'']]], + ['footnotes_20and_20extra_20conventional_20references_1',['Footnotes and Extra-conventional References',['../md_doc_2footnotes-and-other-references.html',1,'']]], + ['for_20introverted_20individuals_2',['Seeking and Navigating Work for Introverted Individuals',['../md_doc_2work-for-introverted-individuals.html',1,'']]], + ['fun_20and_20learning_3',['Fun and Learning',['../md_doc_2fun-and-learning.html',1,'']]] +]; diff --git a/web/search/pages_6.js b/web/search/pages_6.js new file mode 100644 index 0000000..1960150 --- /dev/null +++ b/web/search/pages_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['genie_0',['Quantum Superposition by Genie',['../md_doc_2quantum-superposition-genie.html',1,'']]] +]; diff --git a/web/search/pages_7.js b/web/search/pages_7.js new file mode 100644 index 0000000..1356650 --- /dev/null +++ b/web/search/pages_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['his_20place_20in_20the_20world_0',['Confused Padawan Trying To Find His Place In The World.',['../md_doc_2confused-padawan.html',1,'']]] +]; diff --git a/web/search/pages_8.js b/web/search/pages_8.js new file mode 100644 index 0000000..042084b --- /dev/null +++ b/web/search/pages_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['in_2021st_20century_0',['Love and War in 21st Century',['../md_doc_221st-century-romance.html',1,'']]], + ['in_20the_20world_1',['Confused Padawan Trying To Find His Place In The World.',['../md_doc_2confused-padawan.html',1,'']]], + ['individuals_2',['Seeking and Navigating Work for Introverted Individuals',['../md_doc_2work-for-introverted-individuals.html',1,'']]], + ['introverted_20individuals_3',['Seeking and Navigating Work for Introverted Individuals',['../md_doc_2work-for-introverted-individuals.html',1,'']]] +]; diff --git a/web/search/pages_9.js b/web/search/pages_9.js new file mode 100644 index 0000000..adb451a --- /dev/null +++ b/web/search/pages_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['learning_0',['Fun and Learning',['../md_doc_2fun-and-learning.html',1,'']]], + ['love_20and_20war_20in_2021st_20century_1',['Love and War in 21st Century',['../md_doc_221st-century-romance.html',1,'']]] +]; diff --git a/web/search/pages_a.js b/web/search/pages_a.js new file mode 100644 index 0000000..379341f --- /dev/null +++ b/web/search/pages_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['navigating_20work_20for_20introverted_20individuals_0',['Seeking and Navigating Work for Introverted Individuals',['../md_doc_2work-for-introverted-individuals.html',1,'']]] +]; diff --git a/web/search/pages_b.js b/web/search/pages_b.js new file mode 100644 index 0000000..8774f1b --- /dev/null +++ b/web/search/pages_b.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['padawan_20trying_20to_20find_20his_20place_20in_20the_20world_0',['Confused Padawan Trying To Find His Place In The World.',['../md_doc_2confused-padawan.html',1,'']]], + ['place_20in_20the_20world_1',['Confused Padawan Trying To Find His Place In The World.',['../md_doc_2confused-padawan.html',1,'']]], + ['programming_2',['Sport Programming',['../md_doc_2sport-programming.html',1,'']]] +]; diff --git a/web/search/pages_c.js b/web/search/pages_c.js new file mode 100644 index 0000000..e0998b9 --- /dev/null +++ b/web/search/pages_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['quantum_20superposition_20by_20genie_0',['Quantum Superposition by Genie',['../md_doc_2quantum-superposition-genie.html',1,'']]] +]; diff --git a/web/search/pages_d.js b/web/search/pages_d.js new file mode 100644 index 0000000..8554f24 --- /dev/null +++ b/web/search/pages_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['references_0',['Footnotes and Extra-conventional References',['../md_doc_2footnotes-and-other-references.html',1,'']]] +]; diff --git a/web/search/pages_e.js b/web/search/pages_e.js new file mode 100644 index 0000000..db0565f --- /dev/null +++ b/web/search/pages_e.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['seeking_20and_20navigating_20work_20for_20introverted_20individuals_0',['Seeking and Navigating Work for Introverted Individuals',['../md_doc_2work-for-introverted-individuals.html',1,'']]], + ['sport_20programming_1',['Sport Programming',['../md_doc_2sport-programming.html',1,'']]], + ['superposition_20by_20genie_2',['Quantum Superposition by Genie',['../md_doc_2quantum-superposition-genie.html',1,'']]] +]; diff --git a/web/search/pages_f.js b/web/search/pages_f.js new file mode 100644 index 0000000..385c5ba --- /dev/null +++ b/web/search/pages_f.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['the_20world_0',['Confused Padawan Trying To Find His Place In The World.',['../md_doc_2confused-padawan.html',1,'']]], + ['to_20find_20his_20place_20in_20the_20world_1',['Confused Padawan Trying To Find His Place In The World.',['../md_doc_2confused-padawan.html',1,'']]], + ['trying_20to_20find_20his_20place_20in_20the_20world_2',['Confused Padawan Trying To Find His Place In The World.',['../md_doc_2confused-padawan.html',1,'']]] +]; diff --git a/web/search/search.css b/web/search/search.css new file mode 100644 index 0000000..19f76f9 --- /dev/null +++ b/web/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/web/search/search.js b/web/search/search.js new file mode 100644 index 0000000..666af01 --- /dev/null +++ b/web/search/search.js @@ -0,0 +1,694 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +const SEARCH_COOKIE_NAME = ''+'search_grp'; + +const searchResults = new SearchResults(); + +/* A class handling everything associated with the search panel. + + Parameters: + name - The name of the global variable that will be + storing this instance. Is needed to be able to set timeouts. + resultPath - path to use for external files +*/ +function SearchBox(name, resultsPath, extension) { + if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } + if (!extension || extension == "") { extension = ".html"; } + + function getXPos(item) { + let x = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + x += item.offsetLeft; + item = item.offsetParent; + } + } + return x; + } + + function getYPos(item) { + let y = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + y += item.offsetTop; + item = item.offsetParent; + } + } + return y; + } + + // ---------- Instance variables + this.name = name; + this.resultsPath = resultsPath; + this.keyTimeout = 0; + this.keyTimeoutLength = 500; + this.closeSelectionTimeout = 300; + this.lastSearchValue = ""; + this.lastResultsPage = ""; + this.hideTimeout = 0; + this.searchIndex = 0; + this.searchActive = false; + this.extension = extension; + + // ----------- DOM Elements + + this.DOMSearchField = () => document.getElementById("MSearchField"); + this.DOMSearchSelect = () => document.getElementById("MSearchSelect"); + this.DOMSearchSelectWindow = () => document.getElementById("MSearchSelectWindow"); + this.DOMPopupSearchResults = () => document.getElementById("MSearchResults"); + this.DOMPopupSearchResultsWindow = () => document.getElementById("MSearchResultsWindow"); + this.DOMSearchClose = () => document.getElementById("MSearchClose"); + this.DOMSearchBox = () => document.getElementById("MSearchBox"); + + // ------------ Event Handlers + + // Called when focus is added or removed from the search field. + this.OnSearchFieldFocus = function(isActive) { + this.Activate(isActive); + } + + this.OnSearchSelectShow = function() { + const searchSelectWindow = this.DOMSearchSelectWindow(); + const searchField = this.DOMSearchSelect(); + + const left = getXPos(searchField); + const top = getYPos(searchField) + searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + + // stop selection hide timer + if (this.hideTimeout) { + clearTimeout(this.hideTimeout); + this.hideTimeout=0; + } + return false; // to avoid "image drag" default event + } + + this.OnSearchSelectHide = function() { + this.hideTimeout = setTimeout(this.CloseSelectionWindow.bind(this), + this.closeSelectionTimeout); + } + + // Called when the content of the search field is changed. + this.OnSearchFieldChange = function(evt) { + if (this.keyTimeout) { // kill running timer + clearTimeout(this.keyTimeout); + this.keyTimeout = 0; + } + + const e = evt ? evt : window.event; // for IE + if (e.keyCode==40 || e.keyCode==13) { + if (e.shiftKey==1) { + this.OnSearchSelectShow(); + const win=this.DOMSearchSelectWindow(); + for (let i=0;i do a search + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) { // Up + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } else if (e.keyCode==13 || e.keyCode==27) { + e.stopPropagation(); + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() { + this.keyTimeout = 0; + + // strip leading whitespace + const searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + const code = searchValue.toLowerCase().charCodeAt(0); + let idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) { // surrogate pair + idxChar = searchValue.substr(0, 2); + } + + let jsFile; + let idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) { + const hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + const loadJS = function(url, impl, loc) { + const scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + const domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + const domSearchBox = this.DOMSearchBox(); + const domPopupSearchResults = this.DOMPopupSearchResults(); + const domSearchClose = this.DOMSearchClose(); + const resultsPath = this.resultsPath; + + const handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') { + domSearchClose.style.display = 'inline-block'; + let left = getXPos(domSearchBox) + 150; + let top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + const maxWidth = document.body.clientWidth; + const maxHeight = document.body.clientHeight; + let width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + let height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } else if (!isActive) { // directly remove the panel + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults() { + + function convertToId(search) { + let result = ''; + for (let i=0;i. + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) { + const parentElement = document.getElementById(id); + let element = parentElement.firstChild; + + while (element && element!=parentElement) { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) { + element = element.firstChild; + } else if (element.nextSibling) { + element = element.nextSibling; + } else { + do { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) { + const element = this.FindChildElement(id); + if (element) { + if (element.style.display == 'block') { + element.style.display = 'none'; + } else { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) { + if (!search) { // get search word from URL + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + const resultRows = document.getElementsByTagName("div"); + let matches = 0; + + let i = 0; + while (i < resultRows.length) { + const row = resultRows.item(i); + if (row.className == "SRResult") { + let rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) { + row.style.display = 'block'; + matches++; + } else { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) { // no results + document.getElementById("NoMatches").style.display='block'; + } else { // at least one result + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) { + let focusItem; + for (;;) { + const focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') { + break; + } else if (!focusItem) { // last element + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) { + if (e.type == "keydown") { + this.repeatOn = false; + this.lastKey = e.keyCode; + } else if (e.type == "keypress") { + if (!this.repeatOn) { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } else if (e.type == "keyup") { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + const newIndex = itemIndex-1; + let focusItem = this.NavPrev(newIndex); + if (focusItem) { + let child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') { // children visible + let n=0; + let tmpElem; + for (;;) { // search for last child + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) { + focusItem = tmpElem; + } else { // found it! + break; + } + n++; + } + } + } + if (focusItem) { + focusItem.focus(); + } else { // return focus to search field + document.getElementById("MSearchField").focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = itemIndex+1; + let focusItem; + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') { // children visible + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } else if (this.lastKey==39) { // Right + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } else if (this.lastKey==37) { // Left + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + if (childIndex>0) { + const newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } else { // already at first child, jump to parent + document.getElementById('Item'+itemIndex).focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = childIndex+1; + let elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) { // last child, jump to parent next parent + elem = this.NavNext(itemIndex+1); + } + if (elem) { + elem.focus(); + } + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } +} + +function createResults(resultsPath) { + + function setKeyActions(elem,action) { + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); + } + + function setClassAttr(elem,attr) { + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); + } + + const results = document.getElementById("SRResults"); + results.innerHTML = ''; + searchData.forEach((elem,index) => { + const id = elem[0]; + const srResult = document.createElement('div'); + srResult.setAttribute('id','SR_'+id); + setClassAttr(srResult,'SRResult'); + const srEntry = document.createElement('div'); + setClassAttr(srEntry,'SREntry'); + const srLink = document.createElement('a'); + srLink.setAttribute('id','Item'+index); + setKeyActions(srLink,'return searchResults.Nav(event,'+index+')'); + setClassAttr(srLink,'SRSymbol'); + srLink.innerHTML = elem[1][0]; + srEntry.appendChild(srLink); + if (elem[1].length==2) { // single result + srLink.setAttribute('href',resultsPath+elem[1][1][0]); + srLink.setAttribute('onclick','searchBox.CloseResultsWindow()'); + if (elem[1][1][1]) { + srLink.setAttribute('target','_parent'); + } else { + srLink.setAttribute('target','_blank'); + } + const srScope = document.createElement('span'); + setClassAttr(srScope,'SRScope'); + srScope.innerHTML = elem[1][1][2]; + srEntry.appendChild(srScope); + } else { // multiple results + srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); + const srChildren = document.createElement('div'); + setClassAttr(srChildren,'SRChildren'); + for (let c=0; c + + + + + + +N-Methods: include/search.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    N-Methods +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    search.hpp
    +
    +
    +
    1#if !defined(SEARCH)
    +
    2#define SEARCH
    +
    3
    +
    4#include <utility.hpp>
    +
    5
    +
    6#include <vector>
    +
    7#include <string>
    +
    8#include <functional>
    +
    9
    +
    10namespace nm {
    +
    11 const std::size_t ASCII = 256; // 0-indexed - printable above 31
    +
    12 const std::size_t UTF_EIGHT = 1000;
    +
    13 const std::size_t SIZE_LIMIT_MEM = 64 * 1024 * 1024; // 64 MegaBytes
    +
    14
    +
    15 template<class T, typename U>
    +
    16 U bound_search(T element, const U lo, const U hi, const std::vector<T>& space,
    +
    17 std::function<bool(T&, T&)> compare = default_compare<T>);
    +
    18
    +
    19 /*
    +
    20 * String Search
    +
    21 * Base class for string search algorithms.
    +
    22 */
    +
    +
    23 class SS {
    +
    24 protected:
    +
    25 bool case_sensitive;
    +
    26 std::size_t critical_memory;
    +
    27 bool compare(char x, char y);
    +
    28
    +
    29 std::string w;
    +
    30 std::string s; // input
    +
    31
    +
    32 std::size_t n; // input length
    +
    33 std::int32_t i; // processed
    +
    34 public:
    +
    35 SS(std::string word,
    +
    36 bool case_sensitive = true,
    +
    37 std::size_t memory = SIZE_LIMIT_MEM);
    +
    38
    +
    39 void clear();
    +
    40 void flush();
    +
    41
    +
    42 void stream(char c);
    +
    43 void stream(std::string s);
    +
    44
    +
    45 ~SS() {};
    +
    46 };
    +
    +
    47
    +
    48 /*
    +
    49 * Knuth, Morris, Pratt
    +
    50 * String search algorithm.
    +
    51 */
    +
    +
    52 class KMP : public SS {
    +
    53 private:
    +
    54 std::vector<std::int32_t> positions;
    +
    55 std::vector<std::int32_t> partial;
    +
    56 std::vector<std::int32_t> prefix;
    +
    57
    +
    58 protected:
    +
    59 std::size_t memory(bool all = false);
    +
    60 void prefix_function();
    +
    61 void failure_function();
    +
    62
    +
    63 public:
    +
    64 KMP(std::string word,
    +
    65 bool case_sensitive = true,
    +
    66 std::size_t memory = SIZE_LIMIT_MEM);
    +
    67
    +
    68 void clear();
    +
    69 std::vector<std::int32_t> search();
    +
    70
    +
    71 ~KMP() {};
    +
    72 };
    +
    +
    73
    +
    74 /*
    +
    75 * Boyar (Robert S.) and Moore (J. Strother) Algorithm
    +
    76 * https://www.cs.utexas.edu/~moore/best-ideas/string-searching/index.html
    +
    77 */
    +
    +
    78 class BMA : public SS {
    +
    79 private:
    +
    80 std::vector<std::uint32_t> delta_one;
    +
    81 std::vector<std::uint32_t> delta_two;
    +
    82 std::vector<std::uint32_t> positions;
    +
    83 std::vector<std::uint32_t> delta_zero;
    +
    84
    +
    85 protected:
    +
    86 void delta_function();
    +
    87 std::size_t memory(bool all = false);
    +
    88
    +
    89 public:
    +
    90 BMA(std::string word,
    +
    91 bool case_sensitive = true,
    +
    92 std::size_t memory = SIZE_LIMIT_MEM);
    +
    93
    +
    94 void clear();
    +
    95 std::vector<std::uint32_t> search();
    +
    96
    +
    97 ~BMA() {};
    +
    98 };
    +
    +
    99} // linear and sub-linear string search
    +
    100
    +
    101#endif // SEARCH
    +
    Definition search.hpp:78
    +
    Definition search.hpp:52
    +
    Definition search.hpp:23
    +
    +
    + + + + diff --git a/web/sort_8hpp_source.html b/web/sort_8hpp_source.html new file mode 100644 index 0000000..a72c972 --- /dev/null +++ b/web/sort_8hpp_source.html @@ -0,0 +1,166 @@ + + + + + + + +N-Methods: include/sort.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    N-Methods +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    sort.hpp
    +
    +
    +
    1#if !defined(SORT)
    +
    2#define SORT
    +
    3
    +
    4#include <utility.hpp>
    +
    5
    +
    6#include <functional>
    +
    7#include <vector>
    +
    8
    +
    9namespace nm {
    +
    10 const size_t SIZE_LIMIT_IS = 16;
    +
    11
    +
    12 template<class T, typename U>
    +
    13 void hybrid_sort(U lo, U hi, std::vector<T>& list,
    +
    14 std::function<bool(T&, T&)> compare = default_compare<T>);
    +
    15
    +
    16 template<class T, typename U>
    +
    17 void introspective_qsort(U lo, U hi, std::vector<T>& v, U depth,
    +
    18 std::function<bool(T&, T&)> compare = default_compare<T>);
    +
    19
    +
    20 template<class T, typename U>
    +
    21 void heap_sort(U lo, U hi, std::vector<T>& list,
    +
    22 std::function<bool(T&, T&)> compare = default_compare<T>);
    +
    23
    +
    24 template<class T, typename U>
    +
    25 void insertion_sort(U lo, U hi, std::vector<T>& list,
    +
    26 std::function<bool(T&, T&)> compare = default_compare<T>);
    +
    27
    +
    28 template<class T, typename U>
    +
    29 void quick_sort(U lo, U hi, std::vector<T>& v,
    +
    30 std::function<bool(T&, T&)> compare = default_compare<T>);
    +
    31
    +
    32 template<class T, typename U, typename V>
    +
    33 V merge_sort(U lo, U hi, std::vector<T>& v,
    +
    34 std::function<bool(T&, T&)> compare = default_compare<T>);
    +
    35
    +
    36 // U is expected to be positive integral type.
    +
    37 template<class T, typename U>
    +
    +
    38 class MultiSort {
    +
    39 private:
    +
    40 std::size_t n;
    +
    41 std::vector<std::size_t> permutation;
    +
    42 public:
    +
    43 MultiSort(U n);
    +
    44 U sort(std::vector<T> &list, std::function<bool(T&, T&)> compare = default_compare<T>);
    +
    45
    +
    46 void apply(std::vector<T> &list);
    +
    47 ~MultiSort() {};
    +
    48 };
    +
    +
    49} // namespace nm
    +
    50
    +
    51#endif // SORT
    +
    Definition sort.hpp:38
    +
    +
    + + + + diff --git a/web/splitbar.png b/web/splitbar.png new file mode 100644 index 0000000..fe895f2 Binary files /dev/null and b/web/splitbar.png differ diff --git a/web/splitbard.png b/web/splitbard.png new file mode 100644 index 0000000..8367416 Binary files /dev/null and b/web/splitbard.png differ diff --git a/web/structnm_1_1Integrator-members.html b/web/structnm_1_1Integrator-members.html new file mode 100644 index 0000000..fea3bdd --- /dev/null +++ b/web/structnm_1_1Integrator-members.html @@ -0,0 +1,119 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    N-Methods +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    nm::Integrator< T > Member List
    +
    +
    + +

    This is the complete list of members for nm::Integrator< T >, including all inherited members.

    + + + + + + +
    assign(T data) (defined in nm::Integrator< T >)nm::Integrator< T >inline
    identity (defined in nm::Integrator< T >)nm::Integrator< T >
    integrate(T a, T b) (defined in nm::Integrator< T >)nm::Integrator< T >inline
    Integrator() (defined in nm::Integrator< T >)nm::Integrator< T >inline
    Integrator(T i) (defined in nm::Integrator< T >)nm::Integrator< T >inline
    +
    + + + + diff --git a/web/structnm_1_1Integrator.html b/web/structnm_1_1Integrator.html new file mode 100644 index 0000000..f207549 --- /dev/null +++ b/web/structnm_1_1Integrator.html @@ -0,0 +1,138 @@ + + + + + + + +N-Methods: nm::Integrator< T > Struct Template Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    N-Methods +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nm::Integrator< T > Struct Template Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

    +T assign (T data)
     
    +T integrate (T a, T b)
     
    Integrator (T i)
     
    + + + +

    +Public Attributes

    +T identity
     
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/web/structnm_1_1Link-members.html b/web/structnm_1_1Link-members.html new file mode 100644 index 0000000..3149adf --- /dev/null +++ b/web/structnm_1_1Link-members.html @@ -0,0 +1,121 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    N-Methods +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    nm::Link< C > Member List
    +
    +
    + +

    This is the complete list of members for nm::Link< C >, including all inherited members.

    + + + + + + + + +
    height() (defined in nm::Link< C >)nm::Link< C >inline
    Link() (defined in nm::Link< C >)nm::Link< C >inline
    Link(C *n) (defined in nm::Link< C >)nm::Link< C >inline
    link (defined in nm::Link< C >)nm::Link< C >
    operator C*() (defined in nm::Link< C >)nm::Link< C >inline
    operator=(C *n) (defined in nm::Link< C >)nm::Link< C >inline
    size() (defined in nm::Link< C >)nm::Link< C >inline
    +
    + + + + diff --git a/web/structnm_1_1Link.html b/web/structnm_1_1Link.html new file mode 100644 index 0000000..078f2d0 --- /dev/null +++ b/web/structnm_1_1Link.html @@ -0,0 +1,144 @@ + + + + + + + +N-Methods: nm::Link< C > Struct Template Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    N-Methods +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nm::Link< C > Struct Template Reference
    +
    +
    + + + + + + + + + + + + +

    +Public Member Functions

    +std::size_t size ()
     
    +std::int16_t height ()
     
    +void operator= (C *n)
     
    operator C* ()
     
    Link (C *n)
     
    + + + +

    +Public Attributes

    +C * link = NULL
     
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/web/structnm_1_1Node-members.html b/web/structnm_1_1Node-members.html new file mode 100644 index 0000000..354ca7e --- /dev/null +++ b/web/structnm_1_1Node-members.html @@ -0,0 +1,138 @@ + + + + + + + +N-Methods: Member List + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    N-Methods +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    nm::Node< T, U > Member List
    +
    +
    + +

    This is the complete list of members for nm::Node< T, U >, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    balance() (defined in nm::Node< T, U >)nm::Node< T, U >inline
    height() (defined in nm::Node< T, U >)nm::Node< T, U >inline
    info (defined in nm::Node< T, U >)nm::Node< T, U >
    llink (defined in nm::Node< T, U >)nm::Node< T, U >
    mark() (defined in nm::Node< T, U >)nm::Node< T, U >inline
    marked() (defined in nm::Node< T, U >)nm::Node< T, U >inline
    Node(T k) (defined in nm::Node< T, U >)nm::Node< T, U >inline
    Node(T k, Node *a, Node *b) (defined in nm::Node< T, U >)nm::Node< T, U >inline
    Node(T k, std::function< bool(T &, T &)> c) (defined in nm::Node< T, U >)nm::Node< T, U >inline
    Node(T k, Node *a, Node *b, std::function< bool(T &, T &)> c) (defined in nm::Node< T, U >)nm::Node< T, U >inline
    Node(T k, U i) (defined in nm::Node< T, U >)nm::Node< T, U >inline
    Node(T k, U i, Node *a, Node *b) (defined in nm::Node< T, U >)nm::Node< T, U >inline
    Node(T k, U i, std::function< bool(T &, T &)> c) (defined in nm::Node< T, U >)nm::Node< T, U >inline
    Node(T k, U i, Node *a, Node *b, std::function< bool(T &, T &)> c) (defined in nm::Node< T, U >)nm::Node< T, U >inline
    operator T() const (defined in nm::Node< T, U >)nm::Node< T, U >inline
    operator<(Node n) (defined in nm::Node< T, U >)nm::Node< T, U >inline
    operator<(T x) (defined in nm::Node< T, U >)nm::Node< T, U >inline
    operator==(Node n) (defined in nm::Node< T, U >)nm::Node< T, U >inline
    operator==(T x) (defined in nm::Node< T, U >)nm::Node< T, U >inline
    operator>(Node n) (defined in nm::Node< T, U >)nm::Node< T, U >inline
    operator>(T x) (defined in nm::Node< T, U >)nm::Node< T, U >inline
    rlink (defined in nm::Node< T, U >)nm::Node< T, U >
    size() (defined in nm::Node< T, U >)nm::Node< T, U >inline
    unmark() (defined in nm::Node< T, U >)nm::Node< T, U >inline
    +
    + + + + diff --git a/web/structnm_1_1Node.html b/web/structnm_1_1Node.html new file mode 100644 index 0000000..6708c0b --- /dev/null +++ b/web/structnm_1_1Node.html @@ -0,0 +1,198 @@ + + + + + + + +N-Methods: nm::Node< T, U > Struct Template Reference + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    N-Methods +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    nm::Node< T, U > Struct Template Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    +bool operator< (Node n)
     
    +bool operator> (Node n)
     
    +bool operator== (Node n)
     
    +bool operator< (T x)
     
    +bool operator> (T x)
     
    +bool operator== (T x)
     
    operator T () const
     
    +void mark ()
     
    +std::size_t size ()
     
    +std::int16_t height ()
     
    +std::int16_t balance ()
     
    +bool marked ()
     
    +void unmark ()
     
    Node (T k)
     
    Node (T k, Node *a, Node *b)
     
    Node (T k, std::function< bool(T &, T &)> c)
     
    Node (T k, Node *a, Node *b, std::function< bool(T &, T &)> c)
     
    Node (T k, U i)
     
    Node (T k, U i, Node *a, Node *b)
     
    Node (T k, U i, std::function< bool(T &, T &)> c)
     
    Node (T k, U i, Node *a, Node *b, std::function< bool(T &, T &)> c)
     
    + + + + + + + +

    +Public Attributes

    +U info
     
    +Link< Node< T, U > > llink = NULL
     
    +Link< Node< T, U > > rlink = NULL
     
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/web/sync_off.png b/web/sync_off.png new file mode 100644 index 0000000..3b443fc Binary files /dev/null and b/web/sync_off.png differ diff --git a/web/sync_on.png b/web/sync_on.png new file mode 100644 index 0000000..e08320f Binary files /dev/null and b/web/sync_on.png differ diff --git a/web/tab_a.png b/web/tab_a.png new file mode 100644 index 0000000..3b725c4 Binary files /dev/null and b/web/tab_a.png differ diff --git a/web/tab_ad.png b/web/tab_ad.png new file mode 100644 index 0000000..e34850a Binary files /dev/null and b/web/tab_ad.png differ diff --git a/web/tab_b.png b/web/tab_b.png new file mode 100644 index 0000000..e2b4a86 Binary files /dev/null and b/web/tab_b.png differ diff --git a/web/tab_bd.png b/web/tab_bd.png new file mode 100644 index 0000000..91c2524 Binary files /dev/null and b/web/tab_bd.png differ diff --git a/web/tab_h.png b/web/tab_h.png new file mode 100644 index 0000000..fd5cb70 Binary files /dev/null and b/web/tab_h.png differ diff --git a/web/tab_hd.png b/web/tab_hd.png new file mode 100644 index 0000000..2489273 Binary files /dev/null and b/web/tab_hd.png differ diff --git a/web/tab_s.png b/web/tab_s.png new file mode 100644 index 0000000..ab478c9 Binary files /dev/null and b/web/tab_s.png differ diff --git a/web/tab_sd.png b/web/tab_sd.png new file mode 100644 index 0000000..757a565 Binary files /dev/null and b/web/tab_sd.png differ diff --git a/web/table_8hpp_source.html b/web/table_8hpp_source.html new file mode 100644 index 0000000..4ecd9bd --- /dev/null +++ b/web/table_8hpp_source.html @@ -0,0 +1,144 @@ + + + + + + + +N-Methods: include/table.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    N-Methods +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    table.hpp
    +
    +
    +
    1#if !defined(TABLE)
    +
    2#define TABLE
    +
    3
    +
    4#include <vector>
    +
    5#include <cstdint>
    +
    6#include <functional>
    +
    7
    +
    8namespace nm {
    +
    9 /*
    +
    10 * Operation(0, 0) must return
    +
    11 * identity element.
    +
    12 */
    +
    13 template<typename T>
    +
    +
    14 class Sparse {
    +
    15 private:
    +
    16 std::size_t k;
    +
    17 std::size_t n;
    +
    18 std::function<T(T, T)> f;
    +
    19 std::vector<std::vector<T> > table;
    +
    20
    +
    21 public:
    +
    22 Sparse(const std::vector<T> &data, std::function<T(T, T)> &operation);
    +
    23 T query(std::int32_t l, std::int32_t r);
    +
    24 T cquery(std::int32_t l, std::int32_t r);
    +
    25 ~Sparse() {};
    +
    26 };
    +
    +
    27}
    +
    28
    +
    29#endif // TABLE
    +
    Definition table.hpp:14
    +
    +
    + + + + diff --git a/web/tabs.css b/web/tabs.css new file mode 100644 index 0000000..7fa4268 --- /dev/null +++ b/web/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} diff --git a/web/trees_8hpp_source.html b/web/trees_8hpp_source.html new file mode 100644 index 0000000..443c06a --- /dev/null +++ b/web/trees_8hpp_source.html @@ -0,0 +1,323 @@ + + + + + + + +N-Methods: include/trees.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    N-Methods +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    trees.hpp
    +
    +
    +
    1#if !defined(TREES)
    +
    2#define TREES
    +
    3
    +
    4#include <utility.hpp>
    +
    5
    +
    6#include <vector>
    +
    7#include <cstdint>
    +
    8#include <functional>
    +
    9
    +
    10namespace nm {
    +
    11 /*
    +
    12 * U is a pointer to object or struct.
    +
    13 * U must contain an 'identity' element.
    +
    14 * U must contain an 'assign' function
    +
    15 * which must have associative and commutative
    +
    16 * (and optionally distributive) properties.
    +
    17 * U must contain an 'integrate' function
    +
    18 * to combine two separate parts of the tree.
    +
    19 * See utility.hpp for sample integrators.
    +
    20 */
    +
    21 template <class T, class U>
    +
    + +
    23 private:
    +
    24 std::int32_t n;
    +
    25 std::vector<T> tree;
    +
    26 std::vector<T> auxiliary;
    +
    27 U *integrator;
    +
    28
    +
    29 protected:
    +
    30 bool propagate(std::int32_t i);
    +
    31 void construct(std::vector<T> &data,
    +
    32 std::int32_t lo, std::int32_t hi, std::int32_t i);
    +
    33 T query_tree(std::int32_t lo, std::int32_t hi,
    +
    34 std::int32_t tlo, std::int32_t thi, std::int32_t i);
    +
    35 T update_tree(T value, std::int32_t position,
    +
    36 std::int32_t lo, std::int32_t hi, std::int32_t i);
    +
    37 T update_tree(T value, std::int32_t lo, std::int32_t hi,
    +
    38 std::int32_t tlo, std::int32_t thi, std::int32_t i);
    +
    39
    +
    40 public:
    +
    41 SegmentTree(std::vector<T> &data, U *integrator_struct = new U());
    +
    42 T query(std::int32_t left, std::int32_t right);
    +
    43 T update(T value, std::int32_t position);
    +
    44 T update(T value, std::int32_t left, std::int32_t right);
    +
    45 ~SegmentTree() {};
    +
    46 };
    +
    +
    47
    +
    48} // segment tree
    +
    49
    +
    50namespace nm {
    +
    51 /*
    +
    52 * Reference: TAOCP Volume 3
    +
    53 * 6.2.2 : MIXAL -> C++
    +
    54 * class C is of type Node
    +
    55 * as defined in utility.hpp.
    +
    56 */
    +
    57 template <class C, class T, class U>
    +
    +
    58 class SearchTree {
    +
    59 protected:
    +
    60 C* root;
    +
    61 std::function<bool(T&, T&)> compare;
    +
    62
    +
    63 C* create(T x);
    +
    64 C* rotate_left(C* n);
    +
    65 C* rotate_right(C* n);
    +
    66
    +
    67 C* successor(C* n, bool return_parent = false);
    +
    68 C* predecessor(C* n, bool return_parent = false);
    +
    69 C* node(T x, bool return_parent = false, bool mark = false) const;
    +
    70
    +
    71 // traversal
    +
    72 void inorder(C* n, std::vector<T> &keys);
    +
    73 void preorder(C* n, std::vector<T> &keys);
    +
    74 void postorder(C* n, std::vector<T> &keys);
    +
    75 C* element(std::size_t k, C* n);
    +
    76
    +
    77 public:
    +
    78 SearchTree(std::function<bool(T&, T&)> compare = default_compare<T>);
    +
    79
    +
    80 U insert(T x, U y); // map-like
    +
    81 bool insert(T x); // set-like
    +
    82
    +
    83 bool remove(T x);
    +
    84 bool search(T x) const;
    +
    85
    +
    86 U obtain(T x) const;
    +
    87
    +
    88 ~SearchTree() {};
    +
    89
    +
    90 U & operator [] (T x);
    +
    91
    +
    92 // TODO: return info
    +
    93 // of k-th element
    +
    94 U element(size_t k);
    +
    95
    +
    96 std::vector<T> keys();
    +
    97
    +
    98 std::size_t size() const noexcept;
    +
    99 };
    +
    +
    100
    +
    101 /*
    +
    102 * Reference: TAOCP Volume 3
    +
    103 * 6.2.3 : MIXAL -> C++
    +
    104 * Alternate: libdict/hb_tree
    +
    105 *
    +
    106 * Fibonacci tree of order h + 1
    +
    107 * has height h, and lowest possible
    +
    108 * number of nodes.
    +
    109 * N > (\frac{\phi^{h + 2}}{\sqrt{5}} - 1) - 1
    +
    110 * where \phi is the golden ratio.
    +
    111 * Rounding \frac{\phi^{h + 1}}{\sqrt{5}}
    +
    112 * to nearest integer gives fibonacci h + 1
    +
    113 * of height h.
    +
    114 *
    +
    115 * class C is of type Node
    +
    116 * as defined in utility.hpp.
    +
    117 */
    +
    118 template <class C, class T, class U>
    +
    +
    119 class AVL : public SearchTree<C, T, U> {
    +
    120 private:
    +
    121 // expected height of right subtree
    +
    122 // minus the height of left subtree
    +
    123 std::int16_t balance_factor;
    +
    124 // balance factor is one of {-1, 0, 1}
    +
    125 protected:
    +
    126 C* balance(C* n);
    +
    127 public:
    +
    128 AVL(std::function<bool(T&, T&)> compare = default_compare<T>,
    +
    129 std::int16_t balance_factor = 0);
    +
    130 U insert(T x, U y);
    +
    131 bool insert(T x);
    +
    132 bool remove(T x);
    +
    133 ~AVL() {};
    +
    134
    +
    135 U & operator [] (T x);
    +
    136 };
    +
    +
    137} // search tree and avl tree
    +
    138
    +
    139namespace nm {
    +
    140 template<typename T>
    +
    +
    141 class Fenwick {
    +
    142 private:
    +
    143 std::size_t n;
    +
    144 std::vector<T> bit;
    +
    145 std::function<T(T, T)> f;
    +
    146
    +
    147 public:
    +
    148 Fenwick(const std::size_t size, const std::function<T(T, T)> &operation);
    +
    149 Fenwick(const std::vector<T> &data, const std::function<T(T, T)> &operation);
    +
    150
    +
    151 T query(std::int32_t i);
    +
    152 T query(std::int32_t l, std::int32_t r);
    +
    153
    +
    154 void update(std::int32_t i, T data);
    +
    155
    +
    156 ~Fenwick() {};
    +
    157 };
    +
    +
    158} // fenwick bit tree
    +
    159
    +
    160namespace nm {
    +
    161 /*
    +
    162 * Sleator, Tarjan. ACM.
    +
    163 * https://www.cs.cmu.edu/~sleator/papers/Self-Adjusting.htm
    +
    164 *
    +
    165 * Derived. Log(n) with Large Constant.
    +
    166 * Operations: access, insert, delete (remove), join and split.
    +
    167 * Adapted for understandability.
    +
    168 *
    +
    169 * class C is of type Node
    +
    170 * as defined in utility.hpp.
    +
    171 */
    +
    172 template <class C, class T, class U>
    +
    +
    173 class Splay : public SearchTree<C, T, U> {
    +
    174 protected:
    +
    175 C* splay(T x, C* p, C* g);
    +
    176 public:
    +
    177 Splay(std::function<bool(T&, T&)> compare = default_compare<T>);
    +
    178
    +
    179 U access(T i);
    +
    180 bool insert(T i);
    +
    181 U insert(T i, U y);
    +
    182
    +
    183 ~Splay() {};
    +
    184
    +
    185 U operator [] (T i);
    +
    186
    +
    187 // join and split
    +
    188 template <class FC, class FT, class FU>
    +
    189 friend Splay<FC, FT, FU> join(const Splay<FC, FT, FU> &t1, const Splay<FC, FT, FU> &t2);
    +
    190
    +
    191 template <class FC, class FT, class FU>
    +
    192 friend std::pair<Splay<FC, FT, FU>, Splay<FC, FT, FU> > split(const FT &i, const Splay<FC, FT, FU> &t);
    +
    193 };
    +
    +
    194} // splay tree
    +
    195
    +
    196#endif // TREES
    +
    Definition trees.hpp:119
    +
    Definition trees.hpp:141
    +
    Definition trees.hpp:58
    +
    Definition trees.hpp:22
    +
    Definition trees.hpp:173
    +
    +
    + + + + diff --git a/web/utility_8hpp_source.html b/web/utility_8hpp_source.html new file mode 100644 index 0000000..07cd125 --- /dev/null +++ b/web/utility_8hpp_source.html @@ -0,0 +1,295 @@ + + + + + + + +N-Methods: include/utility.hpp Source File + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    N-Methods +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    utility.hpp
    +
    +
    +
    1#if !defined(UTILS)
    +
    2#define UTILS
    +
    3
    +
    4#include <cstdint>
    +
    5#include <utility>
    +
    6#include <functional>
    +
    7
    +
    8namespace nm {
    +
    9 // default arguments and functions
    +
    10
    +
    11 template<class T>
    +
    12 std::function<bool(T&, T&)> default_compare = [] (T& a, T& b) -> bool {
    +
    13 return a < b;
    +
    14 };
    +
    15} // lambdas
    +
    16
    +
    17namespace nm {
    +
    18 // T is type of data to query on
    +
    19 template<class T>
    +
    +
    20 struct Integrator {
    +
    21 T identity;
    +
    22
    +
    23 // Also modify in update_tree and propagate
    +
    24 T assign(T data) {
    +
    25 // Add arguments and math
    +
    26 // for flexibility and functionality.
    +
    27 // Must have associative and commutative
    +
    28 // (and optionally distributive) properties.
    +
    29 return data;
    +
    30 }
    +
    31
    +
    32 T integrate(T a, T b) {
    +
    33 // Replace with operation(s) on a and b.
    +
    34 return identity;
    +
    35 }
    +
    36
    +
    37 Integrator() : identity(0) {};
    +
    38 Integrator(T i) : identity(i) {};
    +
    39 };
    +
    +
    40} // segment tree
    +
    41
    +
    42namespace nm {
    +
    43 template<class C>
    +
    +
    44 struct Link {
    +
    45 C* link = NULL;
    +
    46
    +
    47 std::size_t size() {
    +
    48 if (link) _size = link->size();
    +
    49 else _size = 0;
    +
    50
    +
    51 return _size;
    +
    52 }
    +
    53
    +
    54 std::int16_t height() {
    +
    55 if (link) _height = link->height();
    +
    56 else _height = 0;
    +
    57
    +
    58 return _height;
    +
    59 }
    +
    60
    +
    61 void operator = (C* n) {
    +
    62 link = n;
    +
    63 size();
    +
    64 height();
    +
    65 }
    +
    66
    +
    67 operator C* () {
    +
    68 return link;
    +
    69 }
    +
    70
    +
    71 Link() : link(NULL), _size(0), _height(0) {};
    +
    72 Link(C* n) : link(n) {
    +
    73 size();
    +
    74 height();
    +
    75 };
    +
    76
    +
    77 private:
    +
    78 std::size_t _size = 0;
    +
    79 std::int16_t _height = 0;
    +
    80 };
    +
    +
    81
    +
    82 /*
    +
    83 * Node contains key, llink, rlink, info.
    +
    84 * Terminology from TAOCP.
    +
    85 */
    +
    86 template<class T, class U>
    +
    +
    87 struct Node {
    +
    88 U info;
    +
    89 Link<Node<T, U> > llink = NULL;
    +
    90 Link<Node<T, U> > rlink = NULL;
    +
    91
    +
    92 bool operator < (Node n) {
    +
    93 return compare(key, n.key);
    +
    94 }
    +
    95
    +
    96 bool operator > (Node n) {
    +
    97 return compare(n.key, key);
    +
    98 }
    +
    99
    +
    100 bool operator == (Node n) {
    +
    101 return key == n.key;
    +
    102 }
    +
    103
    +
    104 bool operator < (T x) {
    +
    105 return compare(key, x);
    +
    106 }
    +
    107
    +
    108 bool operator > (T x) {
    +
    109 return compare(x, key);
    +
    110 }
    +
    111
    +
    112 bool operator == (T x) {
    +
    113 return key == x;
    +
    114 }
    +
    115
    +
    116 operator T () const {
    +
    117 return key;
    +
    118 }
    +
    119
    +
    120 void mark() {
    +
    121 marker = true;
    +
    122 }
    +
    123
    +
    124 std::size_t size() {
    +
    125 return llink.size() + rlink.size() + 1;
    +
    126 }
    +
    127
    +
    128 std::int16_t height() {
    +
    129 return std::max(llink.height(), rlink.height()) + 1;
    +
    130 }
    +
    131
    +
    132 std::int16_t balance() {
    +
    133 return rlink.height() - llink.height();
    +
    134 }
    +
    135
    +
    136 bool marked() {
    +
    137 return marker;
    +
    138 }
    +
    139
    +
    140 void unmark() {
    +
    141 marker = false;
    +
    142 }
    +
    143
    +
    144 Node(T k) : key(k) {};
    +
    145
    +
    146 Node(T k, Node* a, Node* b) :
    +
    147 key(k), llink(a), rlink(b) {};
    +
    148
    +
    149 Node(T k, std::function<bool(T&, T&)> c) :
    +
    150 key(k), compare(c) {};
    +
    151
    +
    152 Node(T k, Node* a, Node* b, std::function<bool(T&, T&)> c) :
    +
    153 key(k), llink(a), rlink(b), compare(c) {};
    +
    154
    +
    155 Node(T k, U i) : key(k), info(i) {};
    +
    156
    +
    157 Node(T k, U i, Node* a, Node* b) :
    +
    158 key(k), info(i), llink(a), rlink(b) {};
    +
    159
    +
    160 Node(T k, U i, std::function<bool(T&, T&)> c) :
    +
    161 key(k), info(i), compare(c) {};
    +
    162
    +
    163 Node(T k, U i, Node* a, Node* b, std::function<bool(T&, T&)> c) :
    +
    164 key(k), info(i), llink(a), rlink(b), compare(c) {};
    +
    165
    +
    166 private:
    +
    167 T key;
    +
    168 bool marker;
    +
    169 std::function<bool(T&, T&)> compare
    +
    170 = default_compare<T>;
    +
    171 };
    +
    +
    172} // search trees
    +
    173
    +
    174#endif // UTILS
    +
    Definition utility.hpp:20
    + +
    Definition utility.hpp:87
    +
    +
    + + + +